M03 · D. Manipuler les modules et les bibliothèques
Créer et importer des modules
Découper un programme en modules (fichiers .py), les importer de différentes façons et protéger le code de test avec if __name__ == "__main__".
1Situer
Le programme de la librairie fait maintenant 800 lignes dans un seul fichier. Pour corriger le calcul de la TVA, il faut chercher pendant dix minutes, et deux stagiaires ne peuvent pas travailler dessus en même temps sans se gêner. On le découpe en modules : un fichier pour les livres, un pour les calculs, un pour le programme principal.
2Comprendre
Ce que fait import
Deux fichiers dans le même dossier : outils.py contient des outils, main.py est le programme principal.
1 / 5
Un module est simplement un fichier .py. Tout ce qu’il définit (fonctions, classes, variables) peut être réutilisé dans un autre fichier grâce à import.
Créer un module
Écrivez vos fonctions dans outils.py. Placez main.py dans le même dossier. C’est tout : outils est devenu un module.
Les façons d’importer
Écriture
Utilisation
Quand
import outils
outils.tva(100)
on voit d’où vient chaque nom
from outils import tva, Ticket
tva(100)
quelques noms utilisés souvent
import outils as o
o.tva(100)
nom de module long
from outils import *
tva(100)
à éviter : on ne sait plus d’où viennent les noms
Où Python cherche-t-il les modules ?
Dans l’ordre : le dossier du programme lancé, puis les dossiers de la bibliothèque standard, puis les bibliothèques installées avec pip. La liste complète est dans sys.path.
Le bloc if __name__ == "__main__"
Quand Python importe un module, il exécute tout son code. Pour qu’une partie ne s’exécute que si on lance le fichier directement, on la protège :
if __name__ =="__main__":
print("Test du module :", ttc(100))
Module et package
Plusieurs modules rangés dans un dossier avec un __init__.py forment un package (vu en C.1) : from centre.personnes import Stagiaire.
Exemple simple
La boîte à outils
Vous ne fabriquez pas un tournevis chaque fois que vous en avez besoin : vous le prenez dans la boîte à outils. Un module, c'est une boîte à outils de fonctions et de classes que d'autres programmes empruntent avec import.
import math
print(math.sqrt(144)) # 12.0
Exemple simple
Prendre seulement ce qu'il faut
On peut importer tout le module, ou seulement un outil, et même lui donner un surnom plus court.
import outils # outils.tva(100)from outils import tva # tva(100)import outils as o # o.tva(100)
Publicité
3Manipuler
Le programme écrit d'abord un fichier outils.py dans la mémoire du navigateur, puis l'importe. Ajoutez une fonction remise(prix, pourcentage) dans le texte du module, et utilisez-la dans le programme principal.
Créez (sur votre ordinateur) un fichier conversions.py avec deux fonctions dh_vers_euro(m) et euro_vers_dh(m), puis un fichier main.py dans le même dossier qui les importe et les utilise.
Dans le module outils, pourquoi le message « Test du module » ne s'affiche-t-il pas quand on fait import outils ? Quand s'afficherait-il ?
Voir le corrigé
Quand un fichier est importé, sa variable __name__ vaut le nom
du module ("outils"), donc le bloc if __name__ == "__main__"
est ignoré. Il ne s'exécute que si on lance directement le
fichier : python outils.py. On y met les tests du module.
Exercice 3 · Explorer un module
Affichez la liste des noms définis dans le module math, puis l'aide de la fonction math.floor.