Aller au contenu

Modules & packages#

courant

Import#

import math
import math as m
from math import sqrt, pi
from math import *          # à éviter (pollue l'espace de noms)

math.sqrt(16)

Structure d'un package#

mon_package/
    __init__.py       # rend le dossier importable ; peut être vide
    module_a.py
    module_b.py
    sous_package/
        __init__.py
        module_c.py
from mon_package import module_a
from mon_package.sous_package import module_c

__name__ == "__main__"#

def main():
    ...

if __name__ == "__main__":   # False si le fichier est importé, True si exécuté directement
    main()

__all__ avancé#

# module_a.py
__all__ = ["fonction_publique"]   # limite ce qu'importe `from module_a import *`

Import relatif dans un package avancé#

from . import module_a           # module du même package
from .sous_package import module_c  # module d'un sous-package
from ..utils import outils           # module d'un package frère, via le parent

Les imports relatifs ne fonctionnent que dans un package importé, jamais dans un fichier lancé directement (python module_a.py → ImportError). Lancer via python -m mon_package.module_a.

Modules standards fréquents#

Module Usage
pathlib, os, shutil Fichiers, chemins, copie/suppression d'arborescences
sys, argparse Arguments, environnement d'exécution, scripts CLI
datetime, zoneinfo, time Dates, fuseaux horaires, chronométrage
json, csv Lecture / écriture de données structurées
re Expressions régulières
math, statistics, decimal Calcul numérique et précision
random Tirages aléatoires, simulation
collections, itertools, functools Structures et outils d'itération
enum, dataclasses Modélisation de données
logging Journalisation
unittest Tests automatisés