🐍 Укус питона 🐍
2.61K subscribers
975 photos
16 videos
284 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Pattern matching. Конструкция match. Продолжение.

После ключевого слова match идет сравниваемое выражение. И затем после двоеточия на последующих строках располагаются выражения case. После каждого выражения case указывается шаблон, с которым сравнивается выражение из match. После шаблона через двоеточие указываются набор выполняемых действий блока case.

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

В качестве паттернов/шаблонов, с которыми сравниваются выражения, могут применяться как данные примитивных типов, так и последовательности элементов и объектов классов.

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

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Что выведет этот код?
Anonymous Quiz
9%
Yellow
47%
Syntax Error
44%
Orange
Pattern matching. Конструкция match. Продолжение.

Здесь функция print_hello принимает параметр language, через который передается выбранный язык. В самой функции конструкция match сравнивает значение переменной language. В блоках case определяются шаблоны - строки, с которыми сопоставляется переменная language.

Например при вызове print_hello("english") параметр language равен "english", поэтому конструкция match выберет следующий блок case:

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Выберите правильный вариант, чтобы удалить “Orange” из набора.
Anonymous Quiz
45%
sampleSet.pop("Orange")
33%
sampleSet.discard("Orange")
22%
del sampleSet ["Orange"]
Pattern matching. Конструкция match. Продолжение.

Обратите внимание, что блоки case имеют отступы от начала конструкции match. А инструкции каждого блока case имеют отступы от начала данного блока case. Но если блок case имеет одну инстукцию, ее можно поместить на той же строке, что и оператор case:

Причем если выражение из match не соответствует ни одному из шаблонов case, то соответственно ни один из этих блоков case не выполняется.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Pattern matching. Конструкция match. Продолжение.

Если необходимо, чтобы при несовпадении значений (если ни один из шаблонов case не соответствует выражению match) выполнялись некоторые действия по умолчанию, то в этом случае применяется шаблон _ (прочерк):

Если ни один из шаблонов case не соответствует значению language, то будет выполняться блок, второй пример:

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Pattern matching. Конструкция match. Продолжение.

Но также можно определить блок case, который позволяет сравнивать сразу с несколькими знечениями. В этом случае значения разделяются вертикальной чертой:

В данном случае шаблон case "american english" | "british english" | "english" соответствует сразу трем значениям.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Что выведет этот код?
Anonymous Quiz
38%
False False
62%
True True
💎 PyLinux - канал для Python программистов и фанов Linux.

👉 Там ты найдешь:

- библиотеки и скрипты Python
- инструменты и лучшие практики Linux
- полезный софт
- важнейшие новости из мира IT

💪 Заходи и прокачивай свои скиллы вместе с PyLinux!
Pattern matching. Конструкция match. Продолжение.

Подобным образом можно сравнивать выражения с данными других типов. Например:

Здесь функция operation принимает два числа и код операции. Конструкция match сравнивает код операции с конкретными значениями и в зависимости от значения выполняет на числами определенную операцию. Например, если code равен 1, то выполняется выражение, второй пример:

это выражение case возвратит из функцию сумму чисел a и b.

Аналогично если code = 2, то возвращается разность, а если code = 3, то возвращается произведение чисел. Во всех остальных случаях возвращается 0.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match