Explication de la leçon
Après cette leçon, tu seras capable de :
case littéraux._.|.L'instruction match de Python est utile lorsqu'une valeur peut prendre plusieurs formes ou commandes connues. Elle est similaire au switch d'autres langages, mais Python l'appelle le filtrage par motif structurel.
match command:
case "start":
print("Starting")
case "stop":
print("Stopping")
case _:
print("Unknown command")Python vérifie les cas de haut en bas et exécute le premier cas correspondant. Il n'y a pas de poursuite automatique (fall-through), tu n'as donc pas besoin d'ajouter break après chaque branche.
Utilise | lorsque plusieurs valeurs littérales doivent partager un même résultat. Une garde ajoute une condition if après un motif lorsque la correspondance sur la valeur seule ne suffit pas.
Pour de simples seuils tels que score >= 90, la structure ordinaire if / elif / else reste plus claire. Cette leçon se concentre sur l'acheminement littéral, les alternatives, les solutions de repli et un cas avec garde — pas sur les motifs avancés de séquences ou d'objets.
Chaque cas littéral gère une commande connue.
command = "pause"
match command:
case "start":
print("Worker: starting")
case "pause":
print("Worker: paused")
case _:
print("Worker: unsupported")Sortie :
Worker: pausedSeul le premier cas correspondant s'exécute.
Le caractère générique _ traite les valeurs qui n'ont pas été listées explicitement.
export_format = "xml"
match export_format:
case "csv":
print("Exporter: CSV")
case "json":
print("Exporter: JSON")
case _:
print("Exporter: unavailable")Sortie :
Exporter: unavailableLe caractère générique doit apparaître après les cas spécifiques.
Utilise | lorsque plusieurs motifs mènent à la même branche.
method = "HEAD"
match method:
case "GET" | "HEAD":
print("Request: read")
case "POST" | "PUT":
print("Request: write")
case _:
print("Request: unsupported")Sortie :
Request: readLa branche s'exécute lorsque l'un ou l'autre littéral correspond.
Une garde affine un cas correspondant à l'aide d'une condition supplémentaire.
event_type = "payment"
amount = 1250
match event_type:
case "payment" if amount >= 1000:
print("Payment: manual review")
case "payment":
print("Payment: automatic")
case _:
print("Event: ignored")Sortie :
Payment: manual reviewLe cas de paiement avec garde doit précéder le cas de paiement plus général.
| Objectif | Motif |
|---|---|
| Faire correspondre un littéral | case "start": |
| Faire correspondre l'un ou l'autre littéral | `case "GET" |
| Ajouter une autre condition | case "payment" if amount > 0: |
| Traiter tout le reste | case _: |
break après chaque cas ; Python ne passe pas automatiquement au cas suivant.case _ avant les cas spécifiques.match pour des seuils numériques ordinaires qui sont plus clairs avec if / elif.