В Python 3.10 имплементирован своего рода оператор switch — что-то вроде него. Оператор switch в других языках, таких как C или Java, выполняет простой матчинг значения переменной и исполняет код в зависимости от этой величины. Он может использоваться просто, как обычный оператор switch, но способен на гораздо большее. Возможно, этого было бы достаточно для языка C, но ведь речь о Python, а в Python 3.10 реализована гораздо более мощная и гибкая конструкция, называемая структурным сопоставлением шаблона. Она может использоваться как простой оператор switch, но способна на гораздо большее. Давайте рассмотрим несложный пример с оператором switch. Ниже приведен сниппет, который осуществляет выбор одного значения. Мы проверим его, запустив в цикле со значениями 1,2,3 и 4. Первое, что бросается в глаза, — это аккуратность синтаксиса. Он начинается с ключевого слова match, за которым следует имя переменной. Затем идет список кейсов, начинающийся с case и сопровождающийся значением, которое сопоставляется. Обратите внимание на использование двоеточий и отступов. Это не отличается от оператора switch/case в других языках, но в отличие, например, от языка C, после исполнения кода для конкретного кейса проверка переходит к завершению оператора match. Если совпадения нет, то происходит выполнение кода в случае по умолчанию, обозначенном символом -. И вот результат. В этом нет ничего удивительного. Оператор switch — это простой кейс матчинга шаблона, но Python идет немного дальше. Взгляните на этот код: Это снова оператор match в цикле, но на этот раз в качестве перечня значений, которые цикл будет итерировать, выступают сами списки — сначала [1,2] затем [9,10] и так далее. Операторы case пытаются выполнить матчинг этих списков. Первый case соответствует списку с одним элементом, второй — списку с двумя элементами, третий — списку с тремя элементами. Последний case используется по умолчанию. Но он делает больше, чем это. Он также выполняет биндинг значений, которые сопоставляются с идентификаторами в операторе case. Так, например, первый список — это , и он соответствует второму случаю . Таким образом, в выполняемом коде идентификаторы x и y принимают значения 1 и 2, соответственно. Совсем неплохо, правда? Итак, результат таков: Из нашей первой несложной программы мы знаем, что можно выполнять матчинг значений, а из приведенной выше — матчинг других, более общих шаблонов. Итак, можем ли мы делать матчинг шаблонов, включающих значения? Конечно! Например, во втором кейсе мы осуществляем матчинг списка, состоящего из двух элементов, первый из которых имеет значение 1. Вот результат: Но это еще не все. Вот программа, которая будет выполнять матчинг списка с любым количеством элементов. В первом case индентификатор отмечен звездочкой, и это означает, что к нему можно привязать весь список, который, как мы видим, можно итерировать с помощью цикла. Это еще не все, но, надеюсь, данная статья дала вам представление о структурном сопоставлении шаблона в Python 3.10. Более расширенно о дополнительном способе матчинга шаблона я писал здесь. На сайте Python.org есть полное описание структурного сопоставления шаблона, включая учебное руководство, в PEP 636. Учебник довольно хороший, и я советую вам его прочитать. В Python 3.10 довольно много новых разработок, помимо структурного матчинга шаблона. О них рассказывается в нескольких статьях, например, см. Джеймс Бриггс Новые возможности в Python 3.10. Однако имейте в виду, что 3.10 еще только бета-версия, и хотя примеры, которые я показал выше, работают отлично, вам не следует использовать Python 3.10 со всей серьезностью до его официального релиза. Приглашаем всех заинтересованных на открытое занятие «Знакомство с веб разработкой на Flask». На нем познакомимся с основами веб разработки на Flask, а также научимся создавать и рендерить шаблоны страниц. Попробуем создать Flask приложение, затем создать роуты и в конце обработать различные HTTP методы на Flask. Регистрирация — по ссылке.  Переводчик, редактор