Инструкции Switch Case

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабе мы узнаем, как использовать новую инструкцию Switch Case на Python, также известную как Структурное сопоставление шаблонов, которая была введена в Python 3.10. Инструкция Switch Case позволяет нам сопоставлять шаблоны легче и более читаемо, чем традиционные инструкции if-elif-else.

Достижения

  • Инструкции Switch Case
  • Инструкции if

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/DataStructuresGroup -.-> python/lists("Lists") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/strings -.-> lab-94{{"Инструкции Switch Case"}} python/conditional_statements -.-> lab-94{{"Инструкции Switch Case"}} python/lists -.-> lab-94{{"Инструкции Switch Case"}} python/data_collections -.-> lab-94{{"Инструкции Switch Case"}} end

Сравнение с инструкциями 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, длины итерируемого объекта, символа нижнего подчеркивания для дефолтного случая и встроенных классов.

Надеюсь, вам понравилось это лаб и вы узнали что-то новое!