Оператор match в Python
Оператор match выбирает, что делать, в зависимости от полученного значения.
Когда иначе понадобилось бы много операторов if..else, их может заменить match.
Из нескольких блоков кода он выбирает один для выполнения.
Вот последовательность действий:
- Python один раз вычисляет выражение
match. - Затем он сравнивает результат со значением каждого
case. - Когда значение совпадает, выполняется блок кода под этим case.
В примере ниже номер дня недели определяет, какое название дня будет выведено:
Пример
Вывод: полная программа на Python
day = 4
match day:
case 1:
print("Понедельник")
case 2:
print("Вторник")
case 3:
print("Среда")
case 4:
print("Четверг")
case 5:
print("Пятница")
case 6:
print("Суббота")
case 7:
print("Воскресенье")
Синтаксис
match expression:
case x:
code block
case y:
code block
case z:
code block
Значение по умолчанию
Чтобы выполнить блок, когда не совпал ни один другой case, закончите case, значением которого является символ подчёркивания _.
Поскольку _ совпадает с чем угодно, его положение важно: он работает как вариант по умолчанию только в последнем case.
Пример
Вывод: полная программа на Python
day = 4
match day:
case 6:
print("Сегодня суббота")
case 7:
print("Сегодня воскресенье")
case _:
print("Жду не дождусь выходных")
Объединение значений
Один case может проверять несколько значений. Разделяйте их символом вертикальной черты |, который здесь работает как «или»:
Пример
Вывод: полная программа на Python
day = 4
match day:
case 1 | 2 | 3 | 4 | 5:
print("Сегодня будний день")
case 6 | 7:
print("Я люблю выходные!")
Операторы if как условия-охранники
У case может быть и дополнительное условие. Просто добавьте оператор if после его значений:
Пример
Вывод: полная программа на Python
month = 5
day = 4
match day:
case 1 | 2 | 3 | 4 | 5 if month == 4:
print("Будний день в апреле")
case 1 | 2 | 3 | 4 | 5 if month == 5:
print("Будний день в мае")
case _:
print("Нет совпадений")