Instruction match...case en Python

Python3 条件控制Contrôle conditionnel Python3

match...caseIl fournit une méthode de correspondance de motifs plus puissante.

La correspondance de motifs est une manière de traiter les structures de données en programmation, rendant le code plus concis et lisible.

match...caseC'est une nouvelle syntaxe introduite dans Python 3.10.

match...caseLa structure syntaxique est la suivante :

match expression:
    case pattern1:
        # 处理pattern1的逻辑
    case pattern2 if condition:
        # 处理pattern2并且满足condition的逻辑
    case _:
        # 处理其他情况的逻辑

Description du paramètre :

  • matchL'instruction est suivie d'une expression, puis utilisezcasel'instruction pour définir différents motifs.
  • caseIl est suivi d'un motif, qui peut être une valeur spécifique, une variable, un joker, etc.
  • Vous pouvez utiliserifmot-clé incasepour ajouter des conditions.
  • _Il est généralement utilisé comme joker pour correspondre à n'importe quelle valeur.

Exemple

1. Correspondance de valeurs simples

Exemple

def match_example(value):
    match value:
        case 1:
            print("Valeur 1 correspondante")
        case 2:
            print("Valeur 2 correspondante")
        case _:
            print("Autres valeurs correspondantes")

match_example(1)  # Sortie : Valeur correspondante 1
match_example(2)  # Sortie : Valeur correspondante 2
match_example(3)  # Sortie : Autres valeurs correspondantes

Dans le code ci-dessus, l'instructionmatchest utilisée pour faire correspondrevalueà différents cas, chaquecasel'instruction représente un cas de correspondance possible,_Le caractère générique représente les autres cas.

Le résultat de sortie est:

匹配到值为1
匹配到值为2
匹配到其他值

2. Utilisation des variables

Exemple

def match_example(item):
    match item:
        case (x, y) if x == y:
            print(f"Correspond à un tuple égal : {item}")
        case (x, y):
            print(f"Correspond à un tuple : {item}")
        case _:
            print("Correspond à d'autres cas")

match_example((1, 1))  #Sortie:Correspond à un tuple égal: (1, 1)
match_example((1, 2))  #Sortie:Correspond à un tuple: (1, 2)
match_example("other") #Sortie:Correspond à d'autres cas

Le résultat de sortie est:

匹配到相等的元组: (1, 1)
匹配到元组: (1, 2)
匹配到其他情况

3. Correspondance de type

Exemple

class Circle:
    def __init__(self, radius):
        self.radius = radius

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

def match_shape(shape):
    match shape:
        case Circle(radius=1):
            print("Correspond à un cercle de rayon 1")
        case Rectangle(width=1, height=2):
            print("Correspond à un rectangle de largeur 1 et de hauteur 2")
        case _:
            print("Correspond à d'autres formes")

match_shape(Circle(radius=1))          # Sortie : Correspond à un cercle de rayon 1
match_shape(Rectangle(width=1, height=2)) # Sortie : Correspond à un rectangle de largeur 1 et de hauteur 2
match_shape("other")                    # Sortie : Correspond à d'autres formes

Le résultat de sortie est:

匹配到半径为1的圆
匹配到宽度为1,高度为2的矩形
匹配到其他形状

Python3 条件控制Contrôle conditionnel Python3

Autres extensions