Section 4.8
Modules
Dans cette section, nous allons nous intéresser à la notion de module en Python. Un module est un ensemble de définitions (comme par exemple des fonctions) assemblées en une seule entité (le module). Ces définitions peuvent ensuite être utilisées dans un ou plusieurs programmes en important le module. Nous verrons dans cette section comment importer un module et comment utiliser les définitions qu'il contient. Ensuite, nous verrons comment créer nos propres modules.
Les modules sont très importants car ils permettent de réutiliser du code. Il est souvent utile de pouvoir réutiliser des fonctions que l'on a déjà écrites dans le contexte d'un nouveau programme. De plus, ils permettent aussi d'utiliser du code écrit par d'autres personnes.
! Remarque
Certains modules sont dits standards, c'est-à-dire qu'ils sont fournis avec Python.
C'est le cas par exemple du module math
qui contient des fonctions et constantes mathématiques.
D'autres modules peuvent être installés
grâce à ce que l'on appelle un gestionnaire de paquets.
Le gestionnaire de paquets le plus utilisé en Python est pip
.
Finalement, comme nous le verrons plus bas, il est aussi possible de créer ses propres modules.
Utiliser un module
Pour utiliser les définitions d'un module, il faut d'abord l'importer.
Pour cela, on utilise l'instruction import
.
Pour importer un module, on utilise la syntaxe import nom_module
.
Par exemple, pour pouvoir utiliser les fonctions mathématiques du module math
,
comme par exemple la fonction racine carrée sqrt
,
on importe le module math
puis l'on peut utiliser les fonctions qu'il contient
en utilisant la notation nom_module.nom_fonction
.
! Remarque
Bien qu'il soit possible d'importer un module n'importe où dans le programme, les instructions d'import de modules sont généralement placées au début du programme, tout en haut du fichier.
Importation sélective
Il est aussi possible d'importer uniquement certaines définitions d'un module.
Pour cela, on utilise la syntaxe from nom_module import nom_fonction1, nom_fonction2, ...
.
De cette manière, on peut utiliser les fonctions importées sans
devoir les préfixer par le nom du module.
Par exemple, pour importer uniquement la fonction sqrt
du module math
,
on peut utiliser la syntaxe from math import sqrt
.
On peut alors utiliser la fonction sqrt
sans préfixer par math
.
Importer toutes les définitions d'un module
Il est aussi possible d'importer toutes les définitions d'un module.
Pour cela, on utilise la syntaxe from nom_module import *
.
En général, il est déconseillé d'utiliser cette syntaxe car elle peut porter à confusion. En effet, il devient difficile de savoir d'où proviennent les définitions utilisées dans le programme, spécialement si plusieurs modules sont importés de cette manière.
Créer un module
Maintenant que nous avons vu comment importer un module, nous allons voir comment créer nos propres modules.
Pour créer un module, il suffit simplement de créer un fichier Python
contenant les définitions que l'on souhaite mettre dans le module.
Ensuite, pour utiliser les définitions du module,
il suffit d'importer le module comme nous l'avons vu précédemment.
Le nom du module est le nom du fichier sans l'extension .py
.
Le fichier doit être placé dans le même dossier que le programme qui l'utilise.
! Remarque
Il est possible dans un module de non seulement définir des fonctions,
mais aussi d'exécuter des instructions arbitraires.
Cependant, il faut savoir que lorsqu'un module est importé, le code qu'il contient est exécuté.
Lorsque ce n'est pas souhaité, il est possible de vérifier si le module est importé
ou exécuté directement en se référant à la variable __name__
.
Lorsque l'on exécute directement un module,
la variable __name__
vaut "__main__"
,
alors que lorsqu'un module est importé,
la variable __name__
vaut le nom du module.
Cela permet de spécifier des instructions qui ne doivent être exécutées que lorsque le module est exécuté directement, et ce de la manière suivante :
✎ Auto-évaluation
En Python, la syntaxe
permet d'importer la fonction nom_fonction
du module nom_module
.
✎ Auto-évaluation
Le nom d'un module est déterminé par en Python.
Dans cette section, nous avons vu comment utiliser et créer des modules en Python. Dans la prochaine section, nous allons conclure ce chapitre sur la programmation en Python.