Оператор match...case в Python

Python3 条件控制Условное управление в Python3

match...caseОн предоставляет более мощный метод сопоставления с образцом.

Сопоставление с образцом — это способ обработки структур данных в программировании, делающий код более кратким и читаемым.

match...caseЭто новый синтаксис, представленный в Python 3.10.

match...caseСтруктура синтаксиса выглядит следующим образом:

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

Описание параметра:

  • matchПосле инструкции следует выражение, затем используйтеcaseинструкцию для определения различных шаблонов.
  • caseЗа ним следует шаблон, который может быть конкретным значением, переменной, подстановочным знаком и т. д.
  • Вы можете использоватьifключевое слово incaseдля добавления условий.
  • _Обычно он используется как подстановочный знак для сопоставления с любым значением.

Пример

1. Сопоставление простых значений

Пример

def match_example(value):
    match value:
        case 1:
            print("Совпало значение 1")
        case 2:
            print("Совпало значение 2")
        case _:
            print("Совпали другие значения")

match_example(1)  # Вывод: Совпало значение 1
match_example(2)  # Вывод: Совпало значение 2
match_example(3)  # Вывод: Совпали другие значения

В приведённом выше коде,match— оператор, используемый для сопоставленияvalueс различными случаями, каждыйcaseОператор представляет возможный соответствующий случай,_Подстановочный знак представляет другие случаи.

Результат вывода:

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

2. Использование переменных

Пример

def match_example(item):
    match item:
        case (x, y) if x == y:
            print(f"Совпал равный кортеж: {item}")
        case (x, y):
            print(f"Совпал кортеж: {item}")
        case _:
            print("Совпали другие случаи")

match_example((1, 1))  #Вывод:Совпал равный кортеж: (1, 1)
match_example((1, 2))  #Вывод:Совпал кортеж: (1, 2)
match_example("other") #Вывод:Совпали другие случаи

Результат вывода:

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

3. Сопоставление типов

Пример

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("Сопоставлен круг с радиусом 1")
        case Rectangle(width=1, height=2):
            print("Сопоставлен прямоугольник с шириной 1 и высотой 2")
        case _:
            print("Сопоставлены другие фигуры")

match_shape(Circle(radius=1))          # Вывод: Сопоставлен круг с радиусом 1
match_shape(Rectangle(width=1, height=2)) # Вывод: Сопоставлен прямоугольник с шириной 1 и высотой 2
match_shape("other")                    # Вывод: Сопоставлены другие фигуры

Результат вывода:

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

Python3 条件控制Условное управление в Python3

Другие расширения