In [1]:
from __future__ import print_function
Python offre un moyen de mettre des définitions dans un fichier et de les utiliser dans un script ou dans un session interactive de l’interpréteur. Un tel fichier s’appelle un module ; les définitions d’un module peuvent être importées dans un autre module ou dans le module principal (la collection de variables à laquelle vous avez accès dans un script exécuté depuis le plus haut niveau et dans le mode calculatrice).
Un module est un fichier contenant des définitions et des instructions Python. Le nom de fichier est le nom du module auquel est ajouté le suffixe '.py
'. Dans un module, le nom du module (comme chaîne de caractères) est disponible comme valeur de la variable globale __name__
. Par exemple, employez votre éditeur de texte préféré pour créer un fichier appelé 'fibo.py'
dans le répertoire courant avec le contenu suivant :
In [3]:
# Module nombres de Fibonacci
def fib(n): # écrit la série de Fibonacci jusqu’à n
a, b = 0, 1
while b < n:
print (b, end=' ')
a, b = b, a+b
def fib2(n): # retourne la série de Fibonacci jusqu’à n
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
On se déplace dans le répertoire courant, à adapter à votre environnement.
In [3]:
cd src/notebook/coursIntroPython/
Maintenant lancez l’interpréteur Python et importez ce module avec la commande suivante :
In [2]:
import fibo
En utilisant le nom de module vous pouvez accéder aux fonctions :
In [5]:
fibo.fib(1000)
In [6]:
fibo.fib2(100)
Out[6]:
Pour connaître les noms qu'un module défini on peut utiliser la fonction dir()
, qui renvoie la liste triée des chaînes de caractères.
In [7]:
dir(fibo)
Out[7]:
Beaucoup de fonctionalités de Python sont disponibles dans des bibliothèques appelées modules. Pour améliorer la lisibilité et la portabilité du code, ces modules ne sont pas pré-chargés lorsque vous lancez Python : il faut les importer explicitement. Par exemple, il y a un module de math qui contient de nombreuses fonctions relatives au mathématiques. Si vous souhaitez utiliser la fonction cosinus, cos, vous pouvez importer le module math puis indiquer que vous appelez la fonction cos en utilisant la notation préfixée. Il en va de même pour les autres éléments de math comme par exemple la constante $\pi$
In [1]:
import math
math.cos(2 * math.pi)
Out[1]:
Quand on a fait un import, il faut donc préfixer tous les objets du module (par exemple math.cos), ceci permet de lever certaines ambiguïtés lors de la lecture du code.
Cependant, surtout lorsqu'on écrit du code à usage unique, cette notation est lourde. Il est possible d'importer tout le contenu d'un module dans l'espace de noms (namespace) courant.
L'espace de noms est constitué par l'ensemble des variables et des fonctions atteignables depuis un endroit du code. Pour connaître le contenu de l'espace de noms courant dans iPython, on peut faire appel à la commande %whos
In [3]:
%whos
Revenons aux modules, pour importer tout le contenu d'un module dans l'espace de noms courant, on peut utiliser:
In [4]:
from math import *
cos(2 * pi)
Out[4]:
Si on importe ainsi beaucoup de modules, ce qui est assez courant, l'espace de nom va vite être très rempli. Si deux fonctions ou variables portent le même nom, alors c'est la fonction du dernier module importé qui sera conservée. Voyons par exemple à quoi ressemble l'espace de noms courant maintenant que nous avons importé tout le module math:
In [13]:
%whos
La bonne pratique concilie le meilleur des deux approches. Elle permet d'importer dans l'espace de noms uniquement les fonctions utiles.
In [5]:
from math import cos, pi
cos(2 * pi)
Out[5]:
Ce notebook est une adaptation de la traduction française, dirigée par Olivier Berger et mise à jour par Henri Garreta, du tutoriel Python édité par Guido van Rossum et Fred L. Drake.