L'instruction Python Switch

Introduction

L'instruction switch est un outil puissant et pratique pour contrôler le flux de votre programme. Il vous permet de créer rapidement et facilement plusieurs branches de code, en fonction de la valeur d'une variable ou d'une expression donnée. Il est couramment utilisé lorsque vous devez exécuter une logique différente en fonction de la valeur d'une variable donnée, qui peut avoir plus de 2 (mais un nombre fini) de valeurs.

Dans cet article, nous explorerons comment utiliser l'instruction switch en Python et discuterons de ses avantages par rapport aux autres structures de contrôle. Que vous soyez nouveau sur Python ou développeur expérimenté, l'instruction switch peut vous aider à écrire du code plus propre et plus efficace.

Avant la v3.10

Avant que l’instruction Python switch ne soit disponible de manière native dans le langage, les programmeurs devaient utiliser d’autres structures de contrôle pour obtenir la même fonctionnalité. Une approche courante consistait à utiliser une série d'instructions if-else, chaque branche de code étant associée à une valeur différente de la variable testée.

Par exemple, considérons le code suivant :

value = "foo"

if value == "foo":
    print("foo was selected")
elif value == "bar":
    print("bar was selected")
else:
    print("Nothing valid was selected")

Dans ce code, nous utilisons une instruction if-else pour déterminer quelle branche de code exécuter en fonction de la valeur de la variable. value. Si value est égal à « foo », la première branche du code sera exécutée. Si value est égal à « bar », la deuxième branche de code sera exécutée. Sinon, le code dans le else Le bloc sera exécuté.

Bien que cette approche fonctionne, elle peut rapidement devenir lourde à mesure que le nombre de valeurs possibles pour la variable augmente. De plus, cela peut rendre le code difficile à lire et à comprendre.

Une autre approche qui peut être utilisée pour créer une instruction de type switch en Python consiste à utiliser un dictionnaire. Dans cette approche, les clés du dictionnaire sont les valeurs possibles de la variable testée, et les valeurs sont les branches de code correspondantes.

Par exemple, considérons le code suivant :

value = "foo"

switch = {
    "foo": lambda: print("foo was selected"),
    "bar": lambda: print("bar was selected"),
    "default": lambda: print("Nothing valid was selected"),
}

switch.get(value, "default")()

Dans ce code, nous avons défini un dictionnaire appelé switch, avec des clés représentant les valeurs possibles de la variable value. Pour chaque clé, nous avons attribué une fonction lambda comme valeur, qui contient la branche de code correspondante. Pour exécuter la branche de code appropriée, nous utilisons le get() méthode du dictionnaire, qui nous permet de spécifier une valeur par défaut à utiliser si la clé donnée n'existe pas dans le dictionnaire.

Bien que cette approche soit plus flexible et plus compacte que l'utilisation d'instructions if-else, elle peut néanmoins être difficile à lire et à comprendre, surtout si le code de chaque branche est complexe. De plus, cela nécessite l’utilisation de fonctions lambda, ce qui peut prêter à confusion pour certains programmeurs. Nous ne vous suggérons pas d'utiliser cette méthode, sauf si, pour une raison quelconque, vous ne pouvez pas utiliser les autres méthodes décrites dans cet article.

Avec l'introduction de l'instruction Python switch dans Python v3.10, les programmeurs disposent désormais d'un moyen plus pratique et intuitif de contrôler le flux de leurs programmes en fonction de la valeur d'une variable ou d'une expression donnée. Dans la section suivante, nous explorerons comment utiliser une véritable instruction switch en Python.

Les match/case Déclaration (après la v3.10)

Après Python v3.10, l'instruction switch est gérée à l'aide du match mot-clé. Ce mot clé est utilisé pour créer une expression de correspondance de modèle, qui vous permet de tester la valeur d'une variable ou d'une expression donnée par rapport à une série de modèles. Si une correspondance est trouvée, la branche de code correspondante est exécutée.

Par exemple, considérons le code suivant :

value = "foo"

match value:
    case "foo":
        print("foo was selected")
    case "bar":
        print("bar was selected")
    case _:
        print("Nothing valid was selected")

Consultez notre guide pratique et pratique pour apprendre Git, avec les meilleures pratiques, les normes acceptées par l'industrie et la feuille de triche incluse. Arrêtez de googler les commandes Git et en fait apprendre il!

Dans ce code, nous utilisons le match mot-clé pour créer une expression de correspondance de modèle, qui teste la valeur de la variable value contre une série de modèles. Si value est égal à « foo », la première branche du code sera exécutée. Si value est égal à « bar », la deuxième branche de code sera exécutée. Sinon, le code du bloc else sera exécuté.

Tomber dans

L'une des principales différences entre les instructions switch en Python et les instructions switch traditionnelles dans d'autres langages est que les instructions switch de Python match la déclaration ne prend pas en charge la transition. En d’autres termes, une fois qu’une correspondance est trouvée et que la branche de code correspondante est exécutée, le match l'expression se termine et aucun autre code dans le match l'instruction est exécutée. Dans d'autres langues, cela est généralement réalisé en utilisant le break mot-clé, qui n’est ni nécessaire ni pris en charge ici.

Si vous souhaitez obtenir le même comportement que le passage à niveau dans une instruction switch traditionnelle, vous pouvez utiliser l'option | opérateur pour faire correspondre plusieurs cas. Cet opérateur vous permet de spécifier plusieurs modèles en un seul case, et n'importe lequel des modèles peut être mis en correspondance pour déclencher l'exécution de cette branche.

Par exemple, considérons le code suivant :

value = "y"

match value:
    case "yes" | "y":
        print("The user confirmed")
    case _:
        print("The user denied")

Ici, si la valeur de value est égal à « oui » or « y », la première branche du code sera exécutée. Cela équivaut au comportement de transition dans une instruction switch traditionnelle.

La valeur par défaut

Comme vous l'avez probablement remarqué dans les exemples ci-dessus, le cas « par défaut » est géré à l'aide d'un trait de soulignement (_). Ceci est considéré comme le « caractère générique » et correspond à toutes les valeurs. Si l'un des cas précédents correspond à la valeur, alors la branche de code par défaut est ignorée et n'est pas exécutée.

Conclusion

Comme vous pouvez le constater, l'instruction Python match (alias « switch ») offre un moyen puissant et pratique de contrôler le flux de votre programme. Que vous soyez nouveau sur Python ou développeur expérimenté, l'instruction switch peut vous aider à écrire du code plus propre et plus efficace.

Horodatage:

Plus de Stackabuse