3.1Modules, packages & bibliothèque standard
À mesure qu'un projet grandit, tout mettre dans un seul fichier devient ingérable. Les modules (un fichier .py) et les packages (un dossier de modules) permettent d'organiser le code et de le réutiliser via import. C'est le passage du script bricolé au projet structuré.
Python est réputé « livré avec les piles » : sa bibliothèque standard offre des dizaines de modules prêts à l'emploi (datetime pour les dates, os pour le système, collections, math, random…). Savoir la fouiller vous évite de réinventer la roue à chaque problème.
Vocabulaire de la section
- Module
- Un fichier .py réutilisable. On y accède avec import mon_module, puis mon_module.fonction().
- Package
- Un dossier contenant des modules (et un __init__.py), pour regrouper un ensemble cohérent de code.
- import
- Charge un module. Variantes : import math / from math import sqrt / import numpy as np (alias).
- Bibliothèque standard
- Modules fournis d'office avec Python : datetime, os, sys, json, random, math, collections, pathlib…
- if __name__ == "__main__"
- Bloc exécuté seulement quand le fichier est lancé directement, pas quand il est importé : sépare code et test.
Quelle est la différence entre un module et un package ?
En pratique — Organiser en modules et exploiter la stdlib
- Créez un module « utils.py » avec deux fonctions, puis importez-le dans un autre fichier et appelez ses fonctions.
- Explorez la stdlib : datetime.now() pour l'heure, random.choice() pour un tirage, os.listdir() pour lister un dossier.
- Utilisez « from module import fonction » et l'alias « import x as y » : mesurez les différences de style.
- Ajoutez un bloc « if __name__ == '__main__' » à un module pour y placer un test qui ne s'exécute pas à l'import.
Points clés à retenir
- Module = un fichier .py ; package = un dossier de modules.
- import (et ses variantes from/as) charge du code réutilisable.
- La bibliothèque standard couvre dates, fichiers, aléatoire, maths… sans rien installer.
- if __name__ == '__main__' sépare le code exécutable du code importable.
Questions fréquentes
Quelle différence entre « import math » et « from math import sqrt » ?
« import math » charge tout le module, à appeler avec math.sqrt(). « from math import sqrt » importe seulement sqrt, appelable directement. La première forme est plus explicite sur l'origine ; évitez « from module import * » qui pollue l'espace de noms.
À quoi sert vraiment « if __name__ == '__main__' » ?
Il permet à un fichier d'être à la fois exécutable et importable. Le code sous ce bloc ne tourne QUE si on lance le fichier directement (python fichier.py), pas quand un autre fichier l'importe. On y met généralement les tests ou le point d'entrée du programme.