L'instruction Match/Case pour Python 3.10

L'instruction Match/Case pour Python 3.10

Comme dans beaucoup de langages de programmation, il existe l'instruction match/case ou parfois nommée switch/case permettant de vérifier qu’une variable correspond à une des valeurs définies. Cette instruction a été introduite récemment dans la version 3.10 de Python. C'est une alternative à l'utilisation des conditions if et elif à répétition.
Regardons comment utiliser l'instruction Match/Case en Python.

Convertir des conditions if/elif

On a tous déjà vu des bouts de code avec beaucoup de conditions if et elif (ou else if), ce qui n'est pas forcément très optimisé, ni très digeste à intégrer dans du code. C'est là que l'instruction switch/case (ou match/case en Python) intervient !

Regardons un bout de code utilisant des conditions elif et convertissons le en utilisant des instructions match/case:

Code avec des conditions if et elif :
code = input()

if code == "200":
  print("Succès : La requête a été traitée avec succès.")
elif code == "404":
  print("Erreur : La ressource demandée est introuvable.")
elif code == "500":
  print("Erreur serveur : Une erreur interne s'est produite.")
else:
  print("Code inconnu : Le code fourni n'est pas reconnu.")

Voici un code très simple, avec la variable code qui utilise la fonction input() qui prompt à l'utilisateur l'entrée d'un code correspondant à 200, 404 ou 500. Si la valeur envoyée est différente, alors on passe dans le else.

Code avec des instructions match/case :
code = input()

match code:
  case "200":
    print("Succès : La requête a été traitée avec succès.")
  case "404":
    print("Erreur : La ressource demandée est introuvable.")
  case "500":
    print("Erreur serveur : Une erreur interne s'est produite.")
  case _:
    print("Code inconnu : Le code fourni n'est pas reconnu.")

Ce code effectue exactement la même chose qu'avec les conditions if et elif mais d'une manière bien plus claire et concise.

Dans le dernier case _, cela correspond au reste, à tout ce qui n'a pas été spécifié. C'est l'équivalent d'un else en quelques sortes.

Conclusion

Pour résumer, l'arrivée de l'instruction match/case dans la version 3.10 de Python n'apporte pas de révolution d'un point de vue fonctionnalités, mais implémente une manière plus claire d'imbriquer ses conditions multiples.

Voici un rappel de l'utilisation de l'instruction match/case en Python :

match valeur:
    case pattern1:
        # code à exécuter si le pattern1 correspond à la valeur
    case pattern2:
        # code à exécuter si le pattern2 correspond à la valeur
    ...
    case patternN:
        # code à exécuter si le patternN correspond à la valeur
    case _:
        # code à exécuter si aucun des patterns correspond