Введение
В этом лабе мы узнаем, как использовать новую инструкцию Switch Case на Python, также известную как Структурное сопоставление шаблонов, которая была введена в Python 3.10. Инструкция Switch Case позволяет нам сопоставлять шаблоны легче и более читаемо, чем традиционные инструкции if-elif-else.
Достижения
- Инструкции Switch Case
- Инструкции if
Сравнение с инструкциями if на Python
Прежде чем мы углубимся в примеры инструкции Switch Case на Python, сравним ее с традиционными инструкциями if-elif-else.
Рассмотрим следующий пример сопоставления кодов ответа HTTP:
response_code = 200
if response_code == 200:
print("OK")
elif response_code == 404:
print("404 Not Found")
elif response_code == 500:
print("Internal Server Error")
Мы можем переписать тот же пример с использованием инструкции Switch Case на Python следующим образом:
response_code = 201
match response_code:
case 200:
print("OK")
case 404:
print("404 Not Found")
case 500:
print("Internal Server Error")
Как вы можете видеть, инструкция Switch Case на Python более компактная и легче читать по сравнению с инструкциями if-elif-else.
Вот синтаксис инструкции switch case:
match term:
case pattern-1:
action-1
case pattern-2:
action-2
case pattern-3:
action-3
case _:
action-default
term - это значение, которое вы хотите сопоставить с шаблонами. Шаблон может быть одиночным значением, кортежем, списком, встроенным классом или комбинацией этих с использованием оператора или (|). _ - это万用ный шаблон, который совмещается с любым значением.
Сопоставление с шаблоном or
В этом примере символ вертикальной черты (| или or) позволяет Python возвращать один и тот же ответ для двух или более случаев.
response_code = 502
match response_code:
case 200 | 201:
print("OK")
case 500 | 502:
print("Internal Server Error")
Это выведет "Internal Server Error", потому что response_code равен либо 500, либо 502.
Мы можем использовать символ нижнего подчеркивания _ для определения дефолтного случая. Рассмотрим следующий пример:
response_code = 800
match response_code:
case 200 or 201:
print("OK")
case 500 or 502:
print("Internal Server Error")
case _:
print("Invalid Code")
В этом примере вывод будет "Invalid Code", потому что значение response_code не охватывается ни одним из случаев.
Сопоставление встроенных классов
Мы также можем сопоставлять шаблоны на основе встроенных классов. Рассмотрим следующий пример:
response_code = ["300"]
match response_code:
case int():
print('response_code is a number')
case str():
print('response_code is a string')
case list():
print('response_code is a list')
case _:
print('response_code is a unknown type')
Это выведет "response_code is a list", потому что response_code является списком.
Резюме
В этом лабе мы узнали, как использовать инструкцию Switch Case на Python, введенную в Python 3.10. Мы сравнили ее с традиционными инструкциями if-elif-else и потренировались в нескольких примерах сопоставления одиночных значений, шаблона or, длины итерируемого объекта, символа нижнего подчеркивания для дефолтного случая и встроенных классов.
Надеюсь, вам понравилось это лаб и вы узнали что-то новое!



