Les modules en python

Temps de lecture : 5 minutes


En programmation, un module est une pièce d’un logiciel qui possède une fonctionnalité spécifique. Par exemple, lors de la création d’un jeu de ping-pong, un module serait responsable de la logique du jeu, et un autre module serait chargé de dessiner le jeu à l’écran. Chaque module est un fichier différent, qui peut être édité séparément.

Très souvent, c’est une personne qui définit une fonction et une autre qui l’utilise. Par exemple, avec la bibliothèque matplotlib, on peut utiliser la fonction plot()  pour tracer des courbes sans avoir à écrire nous-mêmes cette fonction. Nous allons donc voir à présent comment définir des fonctions dans un module et faire en sorte qu’un utilisateur puisse appeler ces fonctions dans son programme.

Par exemple, nous allons créer un fichier nommé puissance.py qui va définir 2 fonctions : carre() et cube(). Un tel fichier est appelé un module et il va pouvoir être importé dans un autre fichier, et en particulier dans le fichier qui contient le programme principal.

1
2
3
4
5
6
7
def carre(valeur):
    resultat = valeur**2
    return resultat

def cube(valeur):
    resultat = valeur**3
    return resultat

Il est maintenant possible d’utiliser dans un programme principal les fonctions qui ont été définies dans le module puissance.py. Pour cela, il faut importer les fonctions à partir du module.

Exemple : on importe une seule fonction

Le fichier puissance.py doit être dans le même répertoire que le programme principal (ou bien se trouver dans le “path” de Python).

Exemple : on importe explicitement les deux fonctions

1
2
3
4
5
6
7
from puissance import carre, cube

a = 5
u = carre(a)
print("le carre vaut", u)
v = cube(a)
print("le cube vaut", v)

Exemple : on importe toutes les fonctions

1
2
3
4
5
6
7
from puissance import *

a = 5
u = carre(a)
print("le carre vaut", u)
v = cube(a)
print("le cube vaut", v)

L’importation de toutes les fonctions avec * est fortement déconseillée. En effet, elle ne permet pas d’avoir une vision claire des fonctions qui ont été importées. Ceci est donc une source potentielle d’erreurs.

Exemple : on importe le module

1
2
3
4
5
6
7
import puissance

a = 5
u = puissance.carre(a)
print("le carre vaut", u)
v = puissance.cube(a)
print("le cube vaut", v)

Dans ce cas, il faut préciser le nom du module devant la fonction.

Exemple : on importe le module et on lui donne un alias

1
2
3
4
5
6
import puissance as pu
a = 5
u = pu.carre(a)
print("le carre vaut", u)
v = pu.cube(a)
print("le cube vaut", v)

Exemple : on importe une fonction d’un module et on lui donne un alias

Il est aussi possible de donner un alias à une fonction comme dans l’exemple suivant :

1
2
3
4
5
from puissance import carre as ca

a = 5
u = ca(a)
print("le carre vaut", u)

Package

Quand on a un grand nombre de modules, il peut être intéressant de les organiser dans des dossiers. Un dossier qui rassemble des modules est appelé un package (paquetage en français). Le nom du package est le même que celui du dossier. Par exemple, on crée un dossier package1 dans lequel on place le fichier module1.py suivant :

1
2
def fonction1(a):
    return a**2

On peut ensuite utiliser la fonction fonction1() définie dans module1.py, en important package1.module1 comme dans l’exemple qui suit :

1
2
3
4
import package1.module1

u = package1.module1.fonction1(3)
print("u vaut", u)

Il est aussi possible d’avoir des dossiers imbriqués, c’est-à-dire des dossiers qui contiennent d’autres dossiers.

Complément

Dans la documentation de Python, il est fait une distinction entre script et module. Voici quelques précisions sur cette distinction.

En Python, lorsqu’on crée un fichier qui rassemble des instructions au lieu de les taper une à une dans l’interpréteur, on appelle ce fichier un script et on le sauvegarde avec une extension .py, par exemple essai.py.

Quand on est amené à travailler sur un programme long, il est utile de séparer le programme en plusieurs fichiers. Certaines parties peuvent alors être réutilisées par d’autres programmes.

Il est par exemple possible d’effectuer la définition des fonctions dans un fichier séparé pour ensuite les utiliser dans un script ou dans l’interpréteur. Le fichier qui contient ces définitions a aussi une extension .py, mais on appelle ce fichier un module.

Les modalités pour importer un module sont expliquées plus haut dans cette page.

A l’intérieur d’un module, le nom du module (en tant que chaîne de caractères) peut être obtenu grâce à la variable globale __name__. Par exemple, si on utilise le module puissance.py défini précédemment, on a dans l’interpréteur :

1
2
3
>>> import puissance
>>> puissance.__name__
'puissance'

Un même fichier .py peut jouer le rôle de script ou de module suivant son utilisation.

Exécution d’un module en tant que script

Quand on utilise un fichier en tant que script, la variable globale __name__ prend pour valeur '__main__'. Ceci permet d’avoir dans le fichier un bloc d’instructions qui sera exécuté uniquement lorsque le fichier est lancé en tant que script.

Par exemple, pour le fichier puissance2.py suivant :

1
2
3
4
5
6
7
def carre(valeur):
    resultat = valeur**2
    return resultat

if __name__ == "__main__":
    a = 3
    print("le carre vaut", carre(a))

On peut lancer une exécution directe en tant que script et on obtient alors :

1
le carre vaut 9

Ou bien on peut importer puissance2 en tant que module, par exemple dans le fichier suivant :

1
2
3
import puissance2 as pu2
b = 4
print("le carre vaut",pu2.carre(b))

Si on exécute ce script, on obtient :

1
le carre vaut 16
comments powered by Disqus

Articles Similaires

Ubuntu 24.04 LTS - Une version qui fait débat entre déception et enthousiasme

Ubuntu 24.04 LTS, “Noble Numbat”, a récemment été déployée, apportant son lot de nouveautés et de changements. Cette version suscite à la fois de l’enthousiasme et de la déception au sein de la communauté des utilisateurs et des développeurs. Déception et colère face à la gestion des paquets DEB Plusieurs utilisateur d’Ubuntu ont exprimé leur déception et colère face à la décision de Canonical, la société mère d’ Ubuntu, de favoriser les paquets Snap au détriment des paquets DEB.

Lire la Suite

Le concours de beauté Miss AI : un cauchemar dystopique ou le futur de la beauté ?

Dans un monde où la technologie et la beauté fusionnent, le concours de beauté Miss AI fait son apparition. Ce concours, organisé par The World AI Creator Awards, récompense les créateurs d’images et d’influenceurs générés par intelligence artificielle (IA). Mais qu’est-ce que cela signifie pour les standards de beauté et les femmes ? Le concours Miss AI est ouvert aux créateurs d’images et d’influenceurs générés par IA qui souhaitent montrer leur charme et leur compétence technique.

Lire la Suite

Le gouvernement du Salvador prend un coup dur : les hackers divulguent le code source et les accès VPN du portefeuille bitcoin national Chivo !

Le programme bitcoin du gouvernement du Salvador, Chivo, a été victime d’une série d’attaques informatiques ces derniers jours. Les hackers ont déjà divulgué les données personnelles de plus de 5 millions de Salvadoriens. Maintenant, les mêmes pirates informatiques ont publié des extraits du code source et des informations d’accès VPN du portefeuille bitcoin national Chivo sur un forum de hacking en ligne, CiberInteligenciaSV. Ceci est un coup dur pour El Salvador, qui lutte pour être un pionnier dans l’adoption du bitcoin.

Lire la Suite