Перейти к основному содержимому

Оператор match в Python

Оператор match выбирает, что делать, в зависимости от полученного значения.

Когда иначе понадобилось бы много операторов if..else, их может заменить match.

Из нескольких блоков кода он выбирает один для выполнения.

Вот последовательность действий:

  • Python один раз вычисляет выражение match.
  • Затем он сравнивает результат со значением каждого case.
  • Когда значение совпадает, выполняется блок кода под этим case.

В примере ниже номер дня недели определяет, какое название дня будет выведено:

Пример

Prompt
Напишите программу на Python, которая использует оператор match, чтобы вывести название дня недели по его номеру. Присвойте day значение 4 и сопоставьте варианты 1-7 с днями от понедельника до воскресенья.
Вывод: полная программа на Python

Синтаксис

main.py
match expression:
  case x:
    code block
  case y:
    code block
  case z:
    code block

Значение по умолчанию

Чтобы выполнить блок, когда не совпал ни один другой case, закончите case, значением которого является символ подчёркивания _.

Поскольку _ совпадает с чем угодно, его положение важно: он работает как вариант по умолчанию только в последнем case.

Пример

Prompt
Напишите программу на Python, которая использует оператор match с вариантом по умолчанию через подчёркивание _. Присвойте day значение 4, сопоставьте 6 с субботой, 7 с воскресеньем, а _ — с сообщением по умолчанию.
Вывод: полная программа на Python

Объединение значений

Один case может проверять несколько значений. Разделяйте их символом вертикальной черты |, который здесь работает как «или»:

Пример

Prompt
Напишите программу на Python, которая использует оператор | (вертикальная черта) в ветках case оператора match для объединения нескольких значений. Сопоставьте дни 1-5 с буднями, а 6-7 — с выходными.
Вывод: полная программа на Python

Операторы if как условия-охранники

У case может быть и дополнительное условие. Просто добавьте оператор if после его значений:

Пример

Prompt
Напишите программу на Python, которая использует условия-охранники if в ветках case оператора match. Сопоставьте шаблоны будних дней с условиями по месяцу для апреля и мая.
Вывод: полная программа на Python