Organiser et structurer son code Python
À mesure que les programmes deviennent plus longs, il devient indispensable de les structurer. Un bon programme ne doit pas être un seul fichier rempli d’instructions, mais un ensemble de modules clairs et cohérents, chacun ayant un rôle précis.
Dans ce chapitre, tu vas apprendre à organiser ton code en plusieurs fichiers, à importer des modules, et à réutiliser tes fonctions dans d’autres programmes. C’est une étape essentielle vers la programmation professionnelle.
Objectifs pédagogiques
- Comprendre ce qu’est un module Python.
- Savoir importer et utiliser un module existant.
- Créer et réutiliser ses propres fichiers de fonctions.
- Découvrir la structure typique d’un projet Python.
Qu’est-ce qu’un module ?
.py) contenant du code (fonctions, classes, variables, constantes...) que l’on peut importer dans d’autres scripts pour le réutiliser.Exemple
Fichier maths_utils.py :
def carre(x):
return x * x
Fichier programme.py :
import maths_utils
print(maths_utils.carre(5))
Résultat :
25
Les différents types d’importation
Importer tout le module
import random nombre = random.randint(1, 10) print(nombre)
Importer une fonction spécifique
Il est possible d’importer uniquement certains éléments d’un module. L'objectif est de ne pas charger tout le module en mémoire si on n’a besoin que d’une partie.
from math import sqrt print(sqrt(25))
Ici, seule la fonction sqrt est importée depuis le module math.
Renommer un module
De façon optionnelle, on peut renommer un module lors de l’importation avec le mot-clé as. Cela permet d’utiliser un nom plus court ou plus adapté dans le code.
import math as m print(m.pi)
Importer plusieurs éléments
from math import pi, sqrt, ceil x = 7.3 print(ceil(sqrt(x * pi)))
Les modules standards de Python
Python intègre de nombreux modules prêts à l’emploi :
| Module | Utilisation principale | Exemple |
|---|---|---|
math | Fonctions mathématiques | math.sqrt(16) |
random | Nombres aléatoires | random.randint(1, 6) |
datetime | Dates et heures | datetime.date.today() |
os | Fichiers, dossiers, système | os.listdir() |
sys | Paramètres du programme | sys.argv |
Il en existe bien d’autres, adaptés à divers besoins (gestion des fichiers ZIP, communication réseau, traitement JSON, etc.). Vous peux consulter la documentation officielle pour une liste complète.
Exemple d’utilisation - Module datetime
import datetime
aujourdhui = datetime.date.today()
print("Nous sommes le", aujourdhui)
Créer ses propres modules
Tu peux organiser ton code en plusieurs fichiers pour le rendre plus lisible.
Créer un fichier outils.py
def saluer(nom):
print(f"Bonjour {nom} !")
def aire_carre(cote):
return cote ** 2
Créer un fichier principal main.py
import outils
outils.saluer("Alice")
print("Aire du carré :", outils.aire_carre(5))
Résultat :
Bonjour Alice !
Aire du carré : 25
Organisation typique d’un projet Python
Une bonne organisation aide à maintenir ton code sur le long terme.
mon_projet/
│
├── main.py # programme principal
├── outils.py # fonctions utilitaires
├── data/ # fichiers de données
│ └── notes.csv
├── modules/ # sous-modules spécifiques
│ ├── calculs.py
│ └── affichage.py
└── README.md # description du projet
Tu peux importer des fichiers situés dans le même dossier ou dans un sous-dossier.
Exemple d’import dans un sous-dossier
Fichier modules/calculs.py :
def addition(a, b):
return a + b
Fichier main.py :
from modules.calculs import addition
print(addition(3, 7))
Résultat :
10
Le bloc spécial if __name__ == "__main__":
Exemple
# fichier outils.py
def dire_bonjour():
print("Salut !")
if __name__ == "__main__":
print("Ce fichier est exécuté directement.")
dire_bonjour()
Bonnes pratiques de structuration
- Une fonction = une seule responsabilité.
- Un fichier = un ensemble logique de fonctions liées.
- Des noms de fichiers et de dossiers explicites (
maths_utils.py,gestion_notes.py, etc.). - Un point d’entrée unique (
main.py). - Des commentaires clairs et des docstrings pour décrire les fonctions.
