Introduction Python

_images/Python_logo.svg

Python est un langage de programmation multi-paradigme libre (régit par la Python Software Foundation License, équivalent à BSD) créé en 1990 par Guido van Rossum, et géré depuis 2001 par la Python Software Foundation.

Python est un langage orienté objet de haut niveau (la syntaxe est séparée des mécanismes de bas-niveau) assez proche de Java, mais souvent considéré comme plus simple et moins ”verbeux” (le code python est parfois très proche du pseudo-code).

Le langage connaît un fort succès depuis plusieurs années [1] aussi bien pour le développement web (scripts CGI, Django, frameworks asynchrones, etc.) que pour le traitement et l’analyse de données (packages Numpy, Pandas, Scipy, scikit-learn, etc.).

Comme il s’agit d’un language interprété, c’est un candidat de choix comme langage de script au sein d’applications lourdes (et généralement développées dans un langage de plus bas niveau). On le retrouve ainsi dans des logiciels de modélisation 3d (Autodesk Maya, Blender), de retouche d’image vectorielle (Inkscape) ou de SIG (ArcGIS, QGIS).

Python possède une grande bibliothèque standard et, en raison de son succès, il existe de très nombreuses bibliothèques, développées par la communauté et spécialisées pour un grand nombre de domaines, permettant aux développeurs de créer des outils rapidement et simplement en utilisant la robustesse de fonctionnalités validées par une large base d’utilisateurs.

Comme tout langage, Python possède quelques spécificités qu’il est utile de connaître avant de commencer.

Language orienté objet

Python est orienté-objet. Il supporte l’héritage multiple et la surcharge des opérateurs. En Python toutes les données manipulées (y compris les types primitifs tels que les nombres et les chaînes de caractères) sont des objets : entier, flottant, liste, dictionnaire, etc. sont tous des objets.

Les objets de même nature ont le même type.

Ces objets contiennent notamment : des propriétés et des méthodes (qu’on va parfois retrouver sous le terme d’attributs). Les propriétés permettent de stocker la valeur de l’objet et les méthodes représentent les fonctions permettant de manipuler la valeur de l’objet.

Typage dynamique fort

Le typage d’une variable consiste à associer un type à une variable. Lorsque le typage est dit statique c’est à l’utilisateur de préciser le type de la variable dans le code source de manière explicite. C’est par exemple le cas du C ou du Java dans lesquels on peut retrouver des instructions de ce type :

int ma_valeur = 12;

Par opposition, Python présente la particularité d’offrir un typage dynamique : lorsqu’une variable est affectée, l’interpréteur trouvera automatiquement son type sans que l’utilisateur ait besoin de le préciser :

ma_valeur = 12
mon_texte = "Une chaine de caractères"

Cela ne signifie pas que les variables n’ont pas de type, ni qu’il est possible d’effectuer des opérations sans prendre en compte le type des variables qui sont manipulées.

Sans rentrer dans les détails on gardera également en tête que Python est un langague fortement typé : le langage garantit que le type des données employé décrit correctement les données en question.

En effet les deux principales caractéristiques d’un typage fort sont :
- la détection des erreurs de typage à la l’exécution (ou à la compilation),
- l’interdiction des conversions implicites de types.

Langage interprété

Python est dynamique : l’interpréteur peut évaluer des chaînes de caractères représentant des expressions ou des instructions Python. Il s’agit d’un langage interprété (comme le Java ou le Perl) à l’inverse de langages comme le C, le C++ ou le Pascal qui sont compilés.

Les langages compilés vont nécessiter de transformer le code source en code binaire (langage machine) lors d’une opération appelée la compilation. Cette opération produit un fichier exécutable dépendant du système d’exploitation et est à effectuer à chaque modification du code source.

Dans le cas d’un langage interprété (l’expression « langage de script » est synonyme), les instructions (le code source) sont « transcrites » par un interpréteur en langage machine au fur et à mesure de leur lecture. L’exécution d’un script écrit en Python est donc conditionnée par la présence de l’interpréteur Python (comme le serait du code Java avec la JVM par exemple).

Bloc d’instructions et indentation

En programmation il est courant de faire des choix (structures conditionnelles), de répéter des opérations (boucles) ou de définir de nouveaux objets. Les instructions propres à ces cas sont appelées bloc d’instructions.

En python les blocs d’instructions sont toujours associés à une ligne d’en-tête contenant une instruction spécifique (if, elif, else, while, def, class, …) se terminant par un double point.

Les blocs sont délimités par l’indentation : toutes les lignes d’un même bloc doivent être indentées exactement de la même manière (c’est-à-dire décalées vers la droite d’un même nombre d’espaces). Le nombre d’espaces à utiliser sans importance, mais la plupart des programmeurs utilisent des multiples de 4 et la lecture du code est plus agréable si ce nombre ne varie pas au sein d’un même programme ou d’une même base de code.

Footnotes