Instructions Switch Case

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à utiliser la nouvelle instruction Switch Case en Python, également connue sous le nom de Correspondance de modèle structurel, introduite dans Python 3.10. L'instruction Switch Case nous permet de correspondre des modèles d'une manière plus facile et plus lisible que les instructions if-elif-else traditionnelles.

Objectifs

  • Instructions Switch Case
  • Instructions if

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/DataStructuresGroup -.-> python/lists("Lists") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/strings -.-> lab-94{{"Instructions Switch Case"}} python/conditional_statements -.-> lab-94{{"Instructions Switch Case"}} python/lists -.-> lab-94{{"Instructions Switch Case"}} python/data_collections -.-> lab-94{{"Instructions Switch Case"}} end

Comparaison avec les instructions if en Python

Avant d'approfondir les exemples de l'instruction Switch Case en Python, comparons-la avec les instructions if-elif-else traditionnelles.

Considérez l'exemple suivant de correspondance de codes de réponse HTTP :

response_code = 200

if response_code == 200:
    print("OK")
elif response_code == 404:
    print("404 Not Found")
elif response_code == 500:
    print("Internal Server Error")

Nous pouvons réécrire le même exemple en utilisant l'instruction Switch Case en Python comme suit :

response_code = 201

match response_code:
    case 200:
        print("OK")
    case 404:
        print("404 Not Found")
    case 500:
        print("Internal Server Error")

Comme vous pouvez le voir, l'instruction Switch Case en Python est plus concise et plus facile à lire que les instructions if-elif-else.

Voici la syntaxe pour une instruction switch case :

match term:
    case pattern-1:
        action-1
    case pattern-2:
        action-2
    case pattern-3:
        action-3
    case _:
        action-default

Le term est la valeur que vous voulez comparer avec les modèles. Le modèle peut être une valeur unique, un tuple, une liste, une classe intégrée ou une combinaison de ces éléments en utilisant l'opérateur ou (|). Le _ est un modèle général qui correspond à n'importe quelle valeur.

Correspondance avec le modèle or

Dans cet exemple, le caractère pipe (| ou or) permet à Python de renvoyer la même réponse pour deux cas ou plus.

response_code = 502
match response_code:
    case 200 | 201:
        print("OK")
    case 500 | 502:
        print("Internal Server Error")

Cela affichera "Internal Server Error" car response_code est soit 500 soit 502.

Nous pouvons utiliser le symbole tiret bas _ pour définir un cas par défaut. Considérez l'exemple suivant :

response_code = 800

match response_code:
    case 200 or 201:
        print("OK")
    case 500 or 502:
        print("Internal Server Error")
    case _:
        print("Invalid Code")

Dans cet exemple, la sortie sera "Invalid Code" car la valeur de response_code n'est couverte par aucun des cas.

Correspondance avec les classes intégrées

Nous pouvons également correspondre des modèles basés sur les classes intégrées. Considérez l'exemple suivant :

response_code = ["300"]

match response_code:
    case int():
        print('response_code est un nombre')
    case str():
        print('response_code est une chaîne de caractères')
    case list():
        print('response_code est une liste')
    case _:
        print('response_code est un type inconnu')

Cela affichera "response_code est une liste" car response_code est une liste.

Récapitulatif

Dans ce laboratoire, nous avons appris à utiliser l'instruction Switch Case en Python introduite dans Python 3.10. Nous l'avons comparée avec les instructions if-elif-else traditionnelles et avons pratiqué plusieurs exemples de correspondance de valeurs uniques, du modèle or, de la longueur d'un itérable, du symbole tiret bas pour le cas par défaut et des classes intégrées.

J'espère que vous avez apprécié ce laboratoire et que vous avez appris quelque chose de nouveau!