Instruction match...case en Python
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 utiliser
ifmot-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
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
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
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的矩形 匹配到其他形状Autres extensions
Contrôle conditionnel Python3