filmov
tv
Pattern Matching в Python 3.10: примеры, ограничения, применение
Показать описание
Новый Python 3.10 вышел с крутой и мощной фичей - pattern matching, хочу показать как с ней можно работать, какие есть ограничения и в чем она хороша.
В первую очередь паттерн матчинг выстрелит там где мы проверяем типы, размеры, состав структур данных и пытаемся получить из них какие то элементы. Новая фича делает подобный код более читаемым, простым, понятным и в то же время мощным и удобным.
Правила работы с ПМ:
1) несмотря на возможность - не стоит давать своим объектам имена match и case
2) _ - универсальный символ (wildcard), может быть добавлен в конце для отработки всех остальных вариантов
3) [a,b], (a,b) и a,b равнозначны, ожидается последовательность (кроме строки и байтов), но не set или dict
4) допустим вызов только типов (float(), str(), MyClass() и т.д.), обращения по индексу недопустимы
5) после паттерна может быть добавлен guard начинающийся с if, он сработает только при удачном сравнении шаблона
6) последовательности (sequence) проверяются строго по содержимому и размеру, маппинги (dict) проверяют только конкретные вхождения ключей
7) имена привязываются (bind) локально, они доступны вне контекста match, для использования внешних констант нужно использовать точку
8) применяются правила распаковки
9) для OR случаев должны быть привязаны одинаковые имена
10) AS позволит привязать имя даже внутри паттерна
11) проверять типы можно даже внутри паттерна и при привязке имени
НЕЛЬЗЯ:
1) писать **_ для маппингов (dict)
2) вызывать свои функции или обращаться к какой то коллекции по индексу (a_list[x]) в блоке case
3) привязывать разные имена при использовании OR (|)
Туториал:
Что нового в питоне 3.10:
Присоединяйтесь к помощи каналу, будет интересно)
✔️Юмани 410011506612886
Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
Смотри там где удобно🤩
#Python #PythonRussian #PyCharm
В первую очередь паттерн матчинг выстрелит там где мы проверяем типы, размеры, состав структур данных и пытаемся получить из них какие то элементы. Новая фича делает подобный код более читаемым, простым, понятным и в то же время мощным и удобным.
Правила работы с ПМ:
1) несмотря на возможность - не стоит давать своим объектам имена match и case
2) _ - универсальный символ (wildcard), может быть добавлен в конце для отработки всех остальных вариантов
3) [a,b], (a,b) и a,b равнозначны, ожидается последовательность (кроме строки и байтов), но не set или dict
4) допустим вызов только типов (float(), str(), MyClass() и т.д.), обращения по индексу недопустимы
5) после паттерна может быть добавлен guard начинающийся с if, он сработает только при удачном сравнении шаблона
6) последовательности (sequence) проверяются строго по содержимому и размеру, маппинги (dict) проверяют только конкретные вхождения ключей
7) имена привязываются (bind) локально, они доступны вне контекста match, для использования внешних констант нужно использовать точку
8) применяются правила распаковки
9) для OR случаев должны быть привязаны одинаковые имена
10) AS позволит привязать имя даже внутри паттерна
11) проверять типы можно даже внутри паттерна и при привязке имени
НЕЛЬЗЯ:
1) писать **_ для маппингов (dict)
2) вызывать свои функции или обращаться к какой то коллекции по индексу (a_list[x]) в блоке case
3) привязывать разные имена при использовании OR (|)
Туториал:
Что нового в питоне 3.10:
Присоединяйтесь к помощи каналу, будет интересно)
✔️Юмани 410011506612886
Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
Смотри там где удобно🤩
#Python #PythonRussian #PyCharm
Комментарии