Installation et utilisation

Qu’est-ce que Python ?

Python est un langage de programmation. Un code source Python est un fichier texte (d’extension py) qui contient des instructions en langage Python.

L’interprétation et l’exécution d’un code source sont accomplies par un logiciel appelé interpréteur Python. Il existe plusieurs versions d’interpréteur Python, la plus connue et la plus intéressante étant CPython, ainsi nommée car elle est écrite en langage C.

Il est important de comprendre la distinction entre un langage pour compilateur (C/C++ par exemple) et un langage pour interpréteur (Python par exemple).

Dans un langage pour compilateur, par exemple C++ pour Arduino, le code source est traité par un compilateur, qui génère un code machine, c’est-à-dire un code directement exécutable par le processeur.

Dans un langage pour interpréteur, ce dernier est un logiciel chargé de lire le code source et d’accomplir la suite des instructions qui y figure, mais il n’y a pas de code machine généré. L’interpréteur Python fonctionne en deux étapes :

  1. Le code source est analysé puis converti en bytecode. Le bytecode est un code de machine virtuelle, c’est-à-dire une suite d’instructions destinées à être lues par une machine virtuelle.

  2. Le bytecode est exécuté par une composante de CPython nommée Python Virtual Machine (PVM). Cette machine virtuelle exécute les instructions qui figurent dans le bytecode, ce qui a pour effet d’accomplir les actions qui étaient demandées dans le code source.

La première étape est parfois appelée compilation, mais à la différence d’un vrai compilateur, elle produit un code de machine virtuelle. C’est au cours de cette étape que d’éventuelles erreurs de syntaxe sont détectées. Lorsque le code source ne change pas, comme c’est le cas du code source d’un module, il n’est pas nécessaire de refaire la première étape à chaque fois. Il existe donc un fichier, d’extension pyc, qui permet de stocker sur disque le bytecode (il s’agit d’un fichier binaire).

Une bibliothèque de fonctions (library en anglais) est une extension de Python qui fournit des fonctions et d’autres objets. On distingue la bibliothèque standard, qui comporte des fonctions d’usage général, et les bibliothèques tierces, en très grand nombre et répondant à une très grande variété de besoins spécifiques.

Le succès du langage Python est dû en grande partie à la facilité avec laquelle une bibliothèque écrite à l’origine en C peut être ajoutée comme extension à CPython.

Installation de CPython

Une installation minimale comporte l’interpréteur Python et toutes les composantes logicielles associées, ainsi que la bibliothèque standard. CPython est un logiciel libre, disponible sur https://www.python.org.

La documentation du langage et de la bibliothèque standard sont aussi consultables sur https://www.python.org.

Pour utiliser Python dans le domaine du calcul scientifique, la bibliothèque standard est insuffisante et on doit faire appel aux trois bibliothèques tierces suivantes :

  1. Numpy : https://numpy.org/doc/

  2. Matplotlib : https://matplotlib.org/

  3. Scipy : https://docs.scipy.org/doc/scipy/reference/

L’accès à la documentation de ces trois bibliothèques est centralisé sur https://www.scipy.org/ (un nom à retenir avec www.python.org).

La première permet de disposer de tableaux numériques et apporte de nombreuses fonctions de traitement des données. La deuxième permet de faire des représentations graphiques. La troisième apporte des fonctions de calcul scientifique dans des domaines très variés.

Ces trois bibliothèques font elles-mêmes appel à d’autres bibliothèques tierces (c.a.d. ne faisant pas partie de la bibliothèque standard). Il est possible d’installer ces bibliothèques avec l’utilitaire pip mais il est beauoup plus simple de faire appel à une distribution Python, qui inclut ces bibliothèques.

La distribution conseillée est Anaconda car, outre les trois bibliothèques déjà citées, elle comporte des centaines d’autres bibliothèques.

Distribution Anaconda

https://www.anaconda.com/

La page d’accueil relève du marketing mais Anaconda est bien une distribution qui permet de faire du calcul scientifique de très haut niveau, dans tous les domaines. Dans le menu Products, il faut choisir la version intitulée Individual edition (Open Source Distribution) puis choisir l’installateur Anaconda correspondant à son système d’exploitation (Windows, MacOS ou Linux). Il est conseillé d’installer la version 32 bits car, si elle est peut-être un peu moins performante, elle est compatible avec le plus grand nombre de bibliothèques tierces.

Après lancement de l’exécutable, choisir installation complète. Celle-ci occupe environ 4 Go.

Chaque version de Anaconda correspond à une certaine version de Python, par exemple Python 3.8. La version proposée au téléchargement par défaut correspond probablement à la dernière version de Python ou au moins à celle d’avant.

Chaque nouvelle version apporte, outre une nouvelle version de Python (ce qui change peu de choses), les toutes dernières versions des bibliothèques tierces, ce qui peut constituer une mise à jour très importante car celles-ci évoluent parfois très vite.

Il est conseillé d’installer la dernière version d’Anaconda si l’on souhaite disposer des dernières versions des bibliothèques (numpy par ex.). Il est aussi possible de faire la mise à jour de ces bibliothèques sans changer de version d’Anaconda, et dans ce cas on ne change pas de version de Python.

Il est possible de garder plusieurs versions d’Anaconda, bien que cela n’ait pas d’intérêt pour la plupart des utilisateurs.

Le répertoire racine de la distribution contient l’exécutable python.exe. Ce programme constitue l’interpréteur CPython et permet donc d’exécuter un code source python (étapes 1 et 2 mentionnées plus haut). Le sous-répertoire Scripts contient des utilitaires, par exemple l’utilitaire conda, qui permet de faire des mises à jour de bibliothèques ou d’en installer.

Utilisation de Python en mode console

Une console Python permet de faire une utilisation interactive de l’interpréteur. Elle permet d’utiliser Python comme une calculatrice, pour faire des petits calculs, ou bien de tester certaines fonctions.

Sur Windows, une console Python s’ouvre lorsqu’on double clique sur le fichier python.exe. Une console plus évoluée est IPython, dont l’exécutable se trouve dans le dossier Script.

La console permet de faire des petits tests, par exemple des tests de fonctions d’un module.

Création et exécution de scripts Python

Un script python est un fichier texte contenant un code source écrit en langage Python. Il doit porter l’extension py. Un script python produit le plus souvent un résultat, par exemple sous forme graphique, mais il peut aussi se contenter de définir des objets, auquel cas il ne produit aucune sortie.

Un éditeur de texte quelconque peut être utilisé pour créer ce fichier, mais la syntaxe du langage Python fait appel à des indentations. Pour comprendre ce qu’est une indentation, examinons le code ci-dessous, qui permet de définir une fonction :

1
2
3
4
5
6
7
import math

def sinus_cardinal(x):
    y = 1
    if x!=0:
        y = math.sin(x)/x
    return y

Le bloc de code qui se trouve dans la fonction (lignes 4 à 7) est un bloc indenté, c’est-à-dire qu’il est décalé par rapport au code dans lequel se trouve la définition de la fonction (introduite par le mot-clé def). De même, la ligne 6, qui constitue un bloc conditionnel, est indenté par rapport au mot-clé if.

Une indentation est introduite au clavier par la touche TAB, ce qui a normalement pour effet d’introduire un caractère d’indentation. Cependant, on préfère en général que ce caractère soit remplacé par plusieurs espaces, ce qui permet de choisir la largeur de l’indentation et donne ainsi une meilleure lisibilité au code source. On parle alors de tabulation émulée avec des espaces. En conséquence, l’éditeur doit être configuré pour remplacer le caractère de tabulation par un nombre déterminé d’espaces (en général 4). L’interpréteur Python détecte automatiquement les groupes d’espaces comme étant des indentations, à condition qu’ils aient tous la même taille dans le script.

Afin de gérer correctement ces indentations, il est conseillé d’utiliser un éditeur de texte spécialement prévu pour Python (voir plus loin).

L’exécution d’un script python avec l’interpréteur CPython peut se faire depuis une console du système d’exploitation, de la manière suivante

python.exe script.py

Environnement de développement

Un environnement de développement (IDE pour Integrated Development Environment) est un logiciel offrant une interface graphique permettant de créer et d’éditer les scripts python et de les exécuter. Il offre aussi une console permettant d’interagir avec l’interpréteur.

L’éditeur d’un IDE pour Python est configuré pour émuler les tabulations par des espaces. Il offre, entre autres fonctions, la coloration syntaxique et la complétion automatique.

Deux IDE sont installés par défaut dans la distribution Anaconda

  • Spyder : très complet.

  • IDLE : le plus simple.

Un autre IDE très facile à utiliser est Pyzo mais il doit être installé en plus de la distribution (https://pyzo.org).

Lorsqu’on travaille avec un IDE, on a d’une part un éditeur de code source qui permet de créer un script et de le modifier, d’autre part une console. Pour tester le script, on lance son exécution avec la touche F5. Si le script contient des entrée-sorties textuelles, celles-ci se font dans la console.

Par ailleurs, toutes les variables globales qui sont définies dans le script sont, après exécution de celui-ci, accessibles dans la console. Par exemple, l’exécution du script défini plus haut définit une fonction nommée sinus_cardinal. Elle peut alors être essayée dans la console :

>>> sinus_cardinal(2.0)
0.45464871341284085

Le symbole >>> est l’invite de commande de la console (console IDLE et Pyzo). L’invite de commande de IPython (utilisée aussi dans Spyder) est différente mais, dans ce document, nous utiliserons le premier symbole.

D’une manière générale, tous les noms définis dans le script en variables globales sont accessibles depuis la console une fois que le script est exécuté.

Voici une copie d’écran de l’interface de Pyzo :

../_images/pyzo.png

On peut voir à gauche la zone d’édition du script et à droite la console.

Si on veut repartir d’une console vierge, dans laquelle les noms précédemment définis n’existent plus, on doit quitter l’interpréteur en cours en cliquant sur la croix rouge, puis ouvrir une nouvelle console comme indiqué ci-dessous :

../_images/pyzo-newshell.png

L’éditeur de Pyzo offre la complétion automatique. Comme on le voit sur la copie d’écran ci-dessous, lorsqu’on cherche une fonction appartenant à un module (ici le module math), il propose la liste des différentes fonctions disponibles et cette liste se réduit au fur et à mesure qu’on entre les premières lettres du mot.

../_images/pyzo-completion.png

Une fois le nom de la fonction entré et la parenthèse ouvrante entrée, il place automatiquement la parenthèse fermante et affiche la signature de la fonction, c’est-à-dire son nom avec la liste de ses paramètres.

../_images/pyzo-completion-2.png

L’excution d’un script peut se faire de plusieurs manières. Voici le contenu du menu run :

../_images/pyzo-run.png

La commande Run file a script a pour effet de redémarrer l’interpréteur puis de lancer le script comme on le ferait depuis une console. Dans ce cas, toutes les variables préexistantes sont effacées avant le lancement du script. C’est la méthode d’exécution à préferer.

La commande Execute file (aussi accessible par la touche F5) exécute le contenu du script mais sans redémarrer l’interpréteur. Dans ce cas, toutes les variables préalablement définies sont conservées. Cette manière de tester un script est à éviter car il faut toujours vérifier que le script fonctionne correctement à partir d’un état ou aucune variable n’est définie. Il faut noter que l’effet de la touche F5 dans l’environnement IDLE correspond à la commande Run file as script.

De manière générale, nous conseillons fortement de créer des scripts indépendants. Un script doit s’exécuter du début à la fin sans avoir besoin de variables préalablement définies. L’exécution de parties du script peut sembler intéressante pour le débutant (par exemple avec la commande Execute selection) mais nous pensons que cette pratique est à proscrire, sauf peut-être pour tester une fonction définie dans le script.

Lorsqu’un script utilise les noms définis dans un autre script, il faut utiliser la commande python import.

L’option Change directory when executing file permet au répertoire dans lequel le script se trouve de devenir automatiquement le répertoire courant. Les fichiers créés seront donc créés dans ce répertoire.

Exemple de script

Le script suivant permet de tracer la courbe représentative d’un polynôme de degré 2 et de calculer ses racines. Dans l’IDE pyzo, créer un nouveau fichier et copier-coller le contenu du script puis enregistrer le script sous le nom equationDegre2.py.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import numpy as np
import matplotlib.pyplot as plt

''' Polynome de degré 2'''

def courbe(a,b,c,intervalle):
    ''' tracé de y = ax^2+bx+c'''
    x = np.linspace(intervalle[0],intervalle[1],1000)
    y = a*x**2+b*x+c
    plt.figure()
    plt.plot(x,y)
    plt.grid()
    plt.xlabel('x')
    plt.ylabel('y')


def racines(a,b,c):
    ''' solutions de ax^2+bx+c=0'''
    delta = b**2-4*a*c
    if delta < 0:
        print('Pas de racines réelles')
        x1 = (-b+np.sqrt(delta+1j*0))/(2*a)
        x2 = (-b-np.sqrt(delta+1j*0))/(2*a)
    else:
        x1 = (-b+np.sqrt(delta))/(2*a)
        x2 = (-b-np.sqrt(delta))/(2*a)
    return (x1,x2)

a,b,c = 1,2,-3
courbe(a,b,c,[-10,10])
print(racines(a,b,c))

plt.show()