match / case
match compare une valeur à des motifs (littéraux, tuples, dictionnaires) et exécute le premier qui correspond. Il remplace une longue suite d'elif quand on aiguille selon la forme d'une donnée.
- match
- case
- filtrage par motif
- pattern matching
- aiguillage
Syntaxe
match valeur: case motif1: ... case motif2 | motif3: # l'un ou l'autre ... case {"cle": variable} if condition: ... case _: ... # tous les autres casExemple
# Aiguiller des événements de logdef traiter(evenement): match evenement: case {"type": "connexion", "user": user}: return f"Bienvenue {user}" case {"type": "erreur", "code": 404 | 410}: return "Page introuvable" case {"type": "erreur", "code": code} if code >= 500: return f"Incident serveur {code}" case _: return "Ignoré"print(traiter({"type": "connexion", "user": "lea"})) # → Bienvenue leaprint(traiter({"type": "erreur", "code": 410})) # → Page introuvableprint(traiter({"type": "erreur", "code": 503})) # → Incident serveur 503print(traiter({"type": "clic", "x": 12})) # → IgnoréÀ retenir
- match existe depuis Python 3.10. case _: attrape tout le reste ; sans lui, une valeur imprévue ne déclenche aucun bloc et aucune erreur.
- Un motif dictionnaire n'exige que les clés citées : {"type": "erreur"} correspond aussi à un dictionnaire qui contient d'autres clés.
- Une garde if placée après le motif ajoute une condition : case (x, y) if x == y:.
- Piège : un nom nu dans un case capture la valeur au lieu de la comparer. case seuil: attrape tout, même si une variable seuil existe ; pour comparer à une constante, utilisez un littéral ou un nom pointé (Statut.ACTIF).
- Pour un simple test d'égalité sur deux ou trois valeurs, if / elif reste plus lisible.
Voir aussi
- if / elif / elseif, elif et else exécutent un bloc selon qu'une condition est vraie ou fausse. On s'en sert pour classer une valeur (mention, tranche de prix) ou écarter un cas particulier avant un calcul.
- DictionnairesUn dictionnaire associe des clés uniques à des valeurs, comme une fiche ou une ligne de table. On s'en sert pour retrouver une information par son identifiant, compter ou regrouper.
- Tuples & ensemblesUn tuple est une séquence non modifiable, idéale pour un enregistrement fixe ; un set est une collection sans doublons, très rapide pour tester l'appartenance ou comparer deux listes.