3. L’instruction match¶
1. Introduction à match¶
L’instruction match est une fonctionnalité introduite dans Python 3.10 pour simplifier les comparaisons
multiples. Elle est inspirée du pattern matching présent dans d’autres langages comme Rust ou Scala.
- Avantage : Remplace avantageusement les longues séquences
if...elif...elsepour des comparaisons de valeurs discrètes. - Utilisation : Permet de comparer une valeur à plusieurs motifs (patterns) et d’exécuter le bloc de code correspondant au motif qui correspond.
2. Syntaxe de base de match¶
match variable:
case motif1:
# Instructions si variable correspond à motif1
case motif2:
# Instructions si variable correspond à motif2
case _:
# Instructions si aucun motif ne correspond (équivalent à `else`)
case: Définit un motif à comparer._: Motif générique qui correspond à toute valeur (équivalent auelsedans une structureif...elif...else).
3. Exemple simple : Comparaison avec if...elif...else¶
3.1 Avec if...elif...else¶
note = 85
if note >= 90:
print("Très bien !")
elif note >= 80:
print("Bien.")
elif note >= 70:
print("Assez bien.")
elif note >= 60:
print("Passable.")
else:
print("Insuffisant.")
Sortie :
3.2 Avec match¶
note = 85
match note:
case n if n >= 90:
print("Très bien !")
case n if n >= 80:
print("Bien.")
case n if n >= 70:
print("Assez bien.")
case n if n >= 60:
print("Passable.")
case _:
print("Insuffisant.")
Sortie :
3.3 Comparaison des deux approches¶
| Critère | if...elif...else |
match |
|---|---|---|
| Lisibilité | Peut devenir verbeux pour de nombreuses conditions. | Plus clair et structuré pour des comparaisons multiples. |
| Flexibilité | Permet des conditions complexes. | Idéal pour des comparaisons de valeurs discrètes. |
| Performance | Aucune différence significative. | Aucune différence significative. |
4. Exemples avancés de match¶
4.1 Correspondance de valeurs littérales¶
jour = "samedi"
match jour:
case "lundi":
print("Première journée de travail.")
case "vendredi":
print("Dernière journée de travail.")
case "samedi" | "dimanche":
print("Fin de semaine !")
case _:
print("Milieu de la semaine.")
Sortie :
4.2 Correspondance avec des types¶
def traiter_valeur(valeur):
match valeur:
case int():
print("C'est un entier.")
case float():
print("C'est un flottant.")
case str():
print("C'est une chaîne de caractères.")
case _:
print("Type non reconnu.")
traiter_valeur(42)
traiter_valeur(3.14)
traiter_valeur("Bonjour")
Sortie :
4.3 Correspondance avec des structures de données¶
def traiter_liste(liste):
match liste:
case []:
print("La liste est vide.")
case [x]:
print(f"La liste contient un seul élément : {x}.")
case [x, y]:
print(f"La liste contient deux éléments : {x} et {y}.")
case _:
print("La liste contient plus de deux éléments.")
traiter_liste([])
traiter_liste([1])
traiter_liste([1, 2])
traiter_liste([1, 2, 3])
Sortie :
La liste est vide.
La liste contient un seul élément : 1.
La liste contient deux éléments : 1 et 2.
La liste contient plus de deux éléments.
4.4 Correspondance avec des dictionnaires¶
def traiter_dictionnaire(dico):
match dico:
case {"nom": nom, "âge": age}:
print(f"Nom : {nom}, Âge : {age}.")
case {"nom": nom}:
print(f"Nom : {nom}, Âge non spécifié.")
case _:
print("Format de dictionnaire non reconnu.")
traiter_dictionnaire({"nom": "Alice", "âge": 30})
traiter_dictionnaire({"nom": "Bob"})
traiter_dictionnaire({"ville": "Paris"})
Sortie :
5. Cas d’utilisation recommandés¶
- Comparaisons de valeurs discrètes :
matchest idéal pour comparer une variable à plusieurs valeurs possibles. - Filtrage de types : Utile pour vérifier le type d’une variable et agir en conséquence.
- Décomposition de structures de données : Permet de décomposer des listes, dictionnaires, ou objets de manière élégante.
6. Limites de match¶
- Pas adapté pour des plages de valeurs : Pour des comparaisons de plages (ex. :
if 10 <= x < 20),if...elif...elsereste plus adapté. - Moins flexible pour des conditions complexes :
matchest conçu pour des comparaisons de motifs, pas pour des expressions booléennes complexes.
Utilisation de l’IA
Page rédigée en partie avec l’aide d’un assistant IA. L’IA a été utilisée pour générer des explications, des exemples et/ou des suggestions de structure. Toutes les informations ont été vérifiées, éditées et complétées par l’auteur.