Structuration des programmes
𧩠1. Modularité
đ DĂ©finition
La modularitĂ©, câest lâidĂ©e de dĂ©couper un programme en morceaux indĂ©pendants (des modules ou fonctions) qui ont chacun un rĂŽle prĂ©cis.
Un module bien conçu = une brique quâon peut tester, rĂ©utiliser ou modifier sans toucher au reste du programme.
â Avantages de la modularitĂ©
| Avantage | Détail |
| Lisibilité | Le code est plus facile à lire |
| Réutilisabilité | On peut réutiliser une fonction dans plusieurs programmes |
| Débogage plus simple | Si un module bug, on peut le tester isolément |
| Travail en équipe | Chacun peut coder un module séparément |
đ ïž Exemple simple
def ajouter(a, b):
return a + b
def demander_nombres():
a = int(input("Entrez un nombre : "))
b = int(input("Entrez un autre : "))
return a, b
def main():
x, y = demander_nombres()
print("Résultat :", ajouter(x, y))
main()
On voit ici :
- Une fonction pour additionner
- Une autre pour demander Ă lâutilisateur
- Et une fonction
main()comme point dâentrĂ©e
đ 2. DĂ©coupage en fichiers / modules
𧱠Pourquoi découper un programme en fichiers ?
Quand un projet devient long (plus de 100-200 lignes), il devient essentiel de séparer le code dans plusieurs fichiers :
- đŒ
utilitaires.py: fonctions génériques
- đź
jeu.py: logique du jeu
- đ§
ia.py: intelligence artificielle
- đȘ
main.py: point dâentrĂ©e du programme
đ Comment importer un fichier Python ?
Si on a un fichier maths_utiles.py :
# maths_utiles.py
def carre(x):
return x * x
On peut lâutiliser dans un autre fichier :
# programme.py
import maths_utiles
print(maths_utiles.carre(5)) # Affiche 25
đ§ Import avancĂ©
from maths_utiles import carre
print(carre(5))
đ Organisation typique dâun projet
mon_projet/
â
âââ main.py # Point dâentrĂ©e
âââ utils.py # Fonctions gĂ©nĂ©rales
âââ data/
â âââ base.json # DonnĂ©es
âââ modules/
â âââ analyse.py
â âââ affichage.py
âââ README.md # Explication du projet
Un bon projet est bien organisé, commenté et découpé.
đŻ 3. Mini-projets / Cas pratiques
đčïž Exemple 1 : Calculatrice en modules
main.py: gĂšre le menu
operations.py: contient les fonctionsadd,sub,mul,div
utils.py: vérifie les entrées de l'utilisateur
đź Exemple 2 : Jeu "Devine le nombre"
main.py: lance le jeu
logique.py: compare les propositions
affichage.py: affiche les messages
đ Exemple 3 : Analyse de texte
analyse.py: fonctions pour compter mots, lettres, etc.
io.py: fonctions pour lire/écrire dans les fichiers
main.py: gÚre l'exécution
đ§č 4. Bonnes pratiques de structuration
đ 1. Nommer clairement les fonctions
def charger_donnees(): # clair
def f1(): # obscur
đ§Œ 2. Ne jamais tout faire dans main()
Séparer les responsabilités !
đŠ 3. Un fichier = un rĂŽle
Exemple :
affichage.pyâ interface console
logique.pyâ rĂšgles mĂ©tier
main.pyâ coordination
đ§Ș 4. Ajouter des tests unitaires
def somme(a, b):
return a + b
def test_somme():
assert somme(2, 3) == 5
assert somme(-1, 1) == 0
test_somme()
đ§ Ă retenir
| ĂlĂ©ment | Pourquoi câest important ? |
| Modularité | Réutiliser et maintenir facilement |
| Fonctions bien nommées | Comprendre le code rapidement |
| Découpage en fichiers | Organiser les gros projets |
| Imports | RĂ©utiliser du code dâun fichier Ă lâautre |
main() | Centraliser lâexĂ©cution |