Оператор Switch Case в Python: Руководство для начинающих

Python, в отличие от некоторых других языков программирования, не включал традиционное выражение switch case до версии 3.10. В этом руководстве мы рассмотрим, как работает эквивалент switch case в Python и как его можно реализовать с использованием функции структурного сопоставления шаблонов в Python.

Понимание традиционных выражений Switch Case

До версии Python 3.10 разработчикам Python приходилось использовать множество выражений if-elif-else или словарей, чтобы имитировать функциональность switch case. Вот основной пример с использованием if-elif-else:

day = input("Enter the day of the week: ").capitalize() if day == "Saturday" or day == "Sunday": print(f"{day} is a weekend.") elif day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]: print(f"{day} is a weekday.") else: print("That's not a valid day of the week.")
Saturday is a weekend.

Введение Match и Case в Python 3.10

С выходом Python 3.10 были введены выражения match и ключевые слова case, предлагая более элегантное решение, аналогичное традиционным выражениям switch case в других языках.

Понимание базового синтаксиса

Рассмотрим сценарий, где мы хотим категоризировать дни недели на выходные или будние дни, а также определить конкретный день. Вот как мы можем использовать выражение match:

day = input("Enter the day of the week: ").capitalize() match day: case "Saturday" | "Sunday": print(f"{day} is a weekend.") case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday": print(f"{day} is a weekday.") case _: print("That's not a valid day of the week.")
Monday is a weekday.
  • Ввод пользователя и метод capitalize(): Мы начинаем с получения ввода пользователя для дня недели и используем метод capitalize(), чтобы правильно его форматировать (первая буква заглавная, остальные строчные).
  • Использование выражения match: Затем мы используем match для оценки переменной day.
  • and so on.

    Пример трансляции:

    Сопоставление шаблонов с помощью case:

    • Первый case проверяет, является ли ввод “Суббота” или “Воскресенье”. Символ “|”, известный как оператор побитового ИЛИ, используется для сопоставления любого из нескольких шаблонов. Если ввод является любым из них, он выводит, что день является выходным.
    • Второй case охватывает все будние дни, проверяя каждый из них. Если ввод совпадает с любым будним днём, он выводит, что день является будним.
  • Альтернативный Case (_): Последний case действует как значение по умолчанию (`else` оператор), который ловит любой ввод, который не совпадает с известными днями, указывая на неверный ввод.
  • Отсутствие операторов break: Обратите внимание, что нам не нужно использовать break после каждого case. Python автоматически выходит из оператора сопоставления после успешного сопоставления.

Синтаксис match-case более читаем и ясен по сравнению с серией операторов if-elif-else.

Расширенные случаи использования Match и Case в Python

Приложения в области data science и т. д.

В Python оператор match-case может быть чрезвычайно полезен в задачах предварительной обработки данных в data science. Предобработка часто включает категоризацию данных в различные группы на основе специфических критериев.

Например, в наборе данных о животных вы можете хотеть их категоризировать на основе их класса, например, млекопитающие, птицы, рептилии и т.д. Вот упрощённый пример:

animal = "Eagle" match animal: case "Eagle" | "Parrot": print("Bird") case "Lion" | "Tiger": print("Mammal") case "Python" | "Crocodile": print("Reptile") case _: print("Unknown Class")
Bird

Этот подход упрощает сложную логику if-else и делает код более читаемым и поддерживаемым, особенно при работе с большими наборами данных с множеством категорий.

Сценарии машинного обучения

В машинном обучении важно обрабатывать различные типы входных данных. Структура match-case может использоваться для извлечения признаков или вывода модели. Например, в модели машинного обучения, предсказывающей погодные условия, match-case может использоваться для категоризации диапазонов температур в ‘Холодно’, ‘Тепло’, ‘Горячо’, что затем может быть использовано в качестве входных признаков для модели.

Общие ошибки и лучшие практики использования Python Switch Case

Советы по отладке

Обычная ошибка при использовании match-case в Python — забывание включить подчёркивание (_) для случая по умолчанию, аналогичного ‘else’ в традиционных операторах if-else. Это может привести к непредвиденному поведению, если не будут совпадать никакие конкретные случаи. Всегда включайте случай по умолчанию для обработки неожиданных или различных значений.

Рассмотрение производительности

Хотя оператор match-case является мощным инструментом, следует учитывать его влияние на производительность кода Python, особенно в крупномасштабных приложениях. В сценариях с большим количеством случаев или сложным сопоставлением шаблонов производительность потенциально может пострадать. Профилирование и тестирование кода на производительность в реальных сценариях очень важно для понимания и смягчения любых потенциальных проблем с производительностью.

Python Match-Case против традиционного Switch-Case

Сравнительный анализ

Python match-case значительно отличается от традиционных операторов switch-case, встречающихся в таких языках, как Java или C++. В Java, например, оператор switch ограничен поиском только скалярных значений (например, целых чисел и типов перечислений), в то время как match-case в Python предлагает гораздо более гибкие возможности поиска шаблонов, позволяя находить сложные типы данных, такие как последовательности и экземпляры классов. Это делает реализацию Python более мощной, но также требует более глубокого понимания концепций сопоставления образцов.

Руководство по переходу

Для программистов, знакомых с традиционными операторами switch-case в таких языках, как C++ или Java, переход к match-case в Python требует изменения мышления от простого сопоставления значений к сопоставлению образцов.

Важно понимать, что match-case в Python – это не просто switch-case, а универсальный инструмент для деконструкции типов данных и извлечения информации из сложных структур. Практика с различными типами данных и шаблонами – ключ к освоению его использования.

Заключение

Переход Python к инструкциям match и case в версии 3.10 предоставляет долгождую функцию для разработчиков, знакомых с операторами switch case в других языках. Она предлагает чистый и ясный способ обработки множества условий, улучшая читаемость и поддерживаемость кода.

Вы можете узнать больше о Функциях Python в нашем полном руководстве и исследовать этот и другие концепты в нашем курсе Средний уровень Python.

Source:
https://www.datacamp.com/tutorial/python-switch-case