Python Glossary English

Python 3.10+Условный операторконструкция

match / case

pattern matching

Сопоставление с образцом (Python 3.10+): значение сравнивается с литералами, типами и структурами; case _ ловит всё остальное.

Синтаксис

match subject:
    case pattern1: ...
    case pattern2 if guard: ...
    case _: ...

Главная ловушка: одиночное имя в case — это не сравнение с переменной, а захват: оно всегда совпадает и связывает значение с этим именем. Чтобы сверять с константой, нужен литерал или имя через точку (например, Status.OK), иначе такой case перехватит вообще всё. Работает только с Python 3.10 и новее.

Примеры

match "quit":
    case "quit": print("выход")   # → выход
    case "help": print("помощь")  # не выполнится: сработал первый case
    case _:      print("неизвестно")
point = (0, 1)
match point:
    case (0, 0): print("начало")
    case (0, y): print(f"ось Y, y={y}")  # → ось Y, y=1
    case (x, y) if x == y: print("диагональ")
    case _: print("общий")
match 42:
    case int(n) if n > 10: print(f"большое {n}")  # → большое 42
    case _: print("другое")

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности