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

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

Сегодня мы увидим, как их использовать, и сравним различия в коде с более традиционным подходом.

Статья построена следующим образом:

  • Старый способ (ы) реализации условных операций
  • Путь Python 3.10 - Заявление о переключении
  • Последние мысли

Старый способ (ы) реализации условных операций

Мы рассмотрим два. Первый - это ваш стандартный оператор if-elif-else, а второй будет использовать словарные сопоставления «ключ-значение», чтобы полностью избежать операторов if.

Перво-наперво нам нужен код. Мы объявим функцию с именем get_mood(day: str) -> str, которая возвращает строку, значение которой зависит от входного параметра. Возвращаемое значение становится все более интересным по мере приближения выходных. Глупая маленькая функция, но подойдет для демонстрационных целей.

Давайте реализуем это по классической if методологии. Вот код:

Здесь нет ничего нового или революционного. Код прост для понимания, но слишком подробен, особенно когда несколько значений могут удовлетворять одному условию.

Мы можем «улучшить» или немного изменить ситуацию, полностью избегая операторов if и написав функцию в виде сопоставлений «ключ-значение». Сюда также входит блок try except для установки возвращаемого значения по умолчанию.

Вот фрагмент кода:

Как видите, результаты идентичны, но мы не использовали условные операторы. Оба подхода будут работать нормально, но в Python всегда отсутствовал специальный оператор switch.

Версия 3.10 исправляет это.

Путь Python 3.10 - Заявление о переключении

Согласно официальной документации:

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

Сегодня мы остановимся на основах и исследуем все, что может предложить сопоставление структурных шаблонов, в другой раз.

Вернемся к нашей get_mood() функции и перепишем ее с синтаксисом, похожим на switch. В отличие от многих других языков программирования, Python использует ключевое слово match вместо switch. Ключевое слово case идентично.

Вот фрагмент кода:

Резюмируем:

  • Используйте ключевое слово case для оценки условия (case ‘Monday’ идентично if day == ‘Monday’)
  • Разделите несколько условий с помощью оператора вертикальной черты - | - например, если два входных значения должны привести к одному и тому же возвращаемому значению
  • Используйте оператор подчеркивания - _ -, чтобы указать регистр по умолчанию.

И есть ваше структурное сопоставление с образцом - по крайней мере, его основы. Это лишь одна из замечательных новых функций, которые скоро появятся в Python 3.10.

Последние мысли

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

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

Учить больше

Оставайся на связи

  • Следуйте за мной на Medium, чтобы увидеть больше подобных историй
  • Подпишитесь на мою рассылку"
  • Подключиться к LinkedIn