Switch/Case в Python
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Основы «Python»
Комментариев: 0

В Python 3.10 к нам пришли операторы Switch/Case, которые во многом используются в других популярных языках программирования.

Цель этого руководства — познакомить вас с новым синтаксисом, который вы можете использовать в Python 3.10. Но давайте сначала узнаем, как мы пользовались операторами до Python 3.10?

Python до 3.10

В Python всегда было несколько решений, которые можно было использовать вместо оператора case или switch. Популярным примером является использование Python if-else-elif

В этом ответе показан следующий пример:

if x == 'a':
    # Do the thing
elif x == 'b':
    # Do the other thing
if x in 'bc':
    # Fall-through by not using elif, but now the default case includes case 'a'!
elif x in 'xyz':
    # Do yet another thing
else:
    # Do the default

Это довольно разумная альтернатива использованию оператора case.

Еще одно распространенное решение, которое вы найдете на StackOverflow и других веб-сайтах, — это использовать словарь Python, чтобы сделать что-то вроде этого:

choices = {'a': 1, 'b': 2}
result = choices.get(key, 'default')

Существуют и другие решения, использующие лямбда-выражения в словарях или функции в словарях. Это тоже правильные решения.

Использование if-elif-else, вероятно, было наиболее распространенным и наиболее удобочитаемым решением до выпуска Python 3.10.

Python 3.10 Switch/Case

  • match (не swtch)
  • case
>>> status_code = 400
>>> match status_code:
...     case 400:
...         print("bad request")
...     case 200:
...         print("good")
...     case _:
           print("Something else bad happened")
bad request

Этот код принимает код состояния и сообщает Python, что нужно сопоставить его с одним из случаев. Если условие не найдено, то регистр _ выведет ошибку по умолчанию.

Условия объединения:

Вы можете немного упростить операторы case, комбинируя условия, с которыми вы сравниваете. Например, вы можете проверить, соответствует ли шаблон status_code нескольким литералам. Для этого вы должны изменить свой код следующим образом: case 400|401|403

Вот полный пример:

>>> status_code = 400 
>>> match status_code: 
...     case 400|401|403 : 
...         print("bad request") 
...     case 200: 
...         print("good")
...     case _:
            print("Something else bad happened")
Теги записи: Python, Switch/Case,
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)