Вот зачем нужен Match Case в Python | Реальное предназначение оператора
Вставка
- Опубліковано 12 чер 2024
- ⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
⭐ Телеграм канал: t.me/+qtzWmnHq03JlNmFh
⭐ Исходный код: t.me/codeblog8/247
В данном видео рассмотрим истинное назначение оператора Match Case, который был добавлен в Python 3.10. Многие люди используют его как обычный switch, однако технология позволяет реализовать более полезные сценарии.
Цель этого видео показать интересные примеры, которые раскрывают суть оператора.
📁 Github: github.com/Zproger
📁 Все плейлисты с уроками: bit.ly/39GaY89
📁 Связаться со мной: zproger777@gmail.com
📁 Поддержать канал: github.com/Zproger/donate
Тайм-коды:
0:00 - Почему Match Case это не Switch?
1:43 - Как Pattern Matching улучшает читабельность кода?
3:33 - Удобная распаковка значений в Match Case Python
4:53 - Самые интересные примеры с Pattern Matching
8:20 - Обработка параметров запуска и дополнительные условия
8:56 if user is not banned_list , разве не if user not in banned_list ?
Достаточно полезная информация. Спасибо!
Благодарю за фидбэк!
@@zprogerСпасибо за видео!!! Действительно, правда, ничего нового, но это действительно огромная тема. Уверен в вашем курсе есть и более продвинутые примеры :)
Очень странные примеры честно говоря. Почему то с самого начала автор говорит что мэтч кейс не просто свич, а в итоге много примеров аля свич..пример с енамкой или хедером. Вообще не очень понятно зачем прям целый объект конфига пихать в свич если хочется проверить только атрибут дебаг у которого просто не может быть логически значения отличного от bool, особенно если выставить дефолтное значение)
А по итогу на галере будешь пользоваться конструкцией как свичем, периодически подсовывая в метч не 1 атрибут а несколько. Не встречал пока ни одного кейса когда нужно было бы дописать еще какое то условие в сам кейс, просто потому что это становится плохо читаемым кодом.
Потом если мы используем метч кейс то у нас появляется двойная вложенность, а мы находимся в ооп, пишем метод для класса, уже тройная..В общем то упираемся в пеп с его длиной строки, от чего для лучшей читаемости хотя бы для себя любимого ты не будешь писать какие то сложные условия прям в кейсе.
По итогу упрешься в то что лучше бы заинтересоваться паттернами проектирования и собрать фабрику или абстрактную фабрику чем бахать полотно из не читаемых кейсов со сложными условиями.
Вообще кажется что примеры нужно приводить по делу. То есть не нужно лезть в хедер и пытаться там что то метчить, этим уже занимается твой фреймворк. Не нужно лезть в командную строку и метчить атрибуты, ведь люди уже придумали удобные инструменты для разработки cli (плюс при добавлении еще одного ключа кейсами себе в ногу выстрелишь, кажется что лучше последовательно обрабатывать атрибуты, а не перебирать их различные комбинации). Не нужно в метч кидать целый дикт и пытаться сметчить ключи, ведь есть схемы, датаклассы и тд, в которых можно с легкостью необычайной что то валидировать, если уж сильно хочется то метчи сами ключи, мы ведь не будем на каждый кейс писать новый дикт, который может быть бесконечно огромным.
Резюме: Автор, не готовь детей к егэ, нужно писать правильные и продуманные примеры от которых не будешь валяться на полу от кринжа. Примеры просто не терпят никакой критики, а начинающие айтишнички уж тем более. По этому важнее показать чистый код для какой либо конструкции, потому что в твой видос вернется не 1 джун и заберет твои ошибки себе, чтобы потом с красным лицом и красным носиком переделывать, когда его МР не апрувнет ревьюер.
Классно!
Хорошое и полезное видео :D
Я тоже за pycharm - мне легче воспринимать более контрастный цвет.
Спасибо за показ примеров с множеством условий. Думаю теперь мой код станет более читаемым.
*пошла убирать вложенность из match case...
Цветовую схему можно менять и далее делать кастомную практически в любом редакторе
Спасибо большое, раскрыл глаза на match. Я думал это и правда типичный switch.
Отличный разбор. Спасибо! Код больше нравится в pycharm
Спасибо
Видео супер!
Хотелось увидеть туториал как сделать такое же оформления ОС
Спасибо
Спасибо за крутой видос!
Благодарю!
Подскажите пожалуйста что за оболочка линукса. Я не очень шарю в оболочках, но очень уж понравился внешний вид оболочки как на видео. В комментариях увидел что то про оконные менеджеры. Но мне интересно как в общем сделать такой внешний вид, например панель задач и т.д.
Привет! В чём ты пишешь? В чём посоветуешь писать код для новичка в программировании на Пайтон?
Видео огонь! Почему на 2:03 .__repr__, а не !r в f-строке? Это было сделано чисто ради наглядности примера, или есть более глубокое значение?
В Pycharm есть presentation mode, в нём ещё более наглядно
Соглашусь. в presentation mode было бы славно
Полезная инфа, спасибо! А как также настроить вим, как у тебя?
Пока что это дефолт настройка nvchad, я еще не добавлял свои плагины)
Закидаю паттернов в код, пусть гуглят потом
Привет, отличное видео. Больше двух лет пишу на python, но часть паттернов не знал) Как ты относишься к django в текущем рынке айти, тк востребован практически на всех вакансиях, но при этом сейчас уже потихоньку умирает
Понравилось, спасибо!
Было бы неплохо еще углубиться в проверку типов. Как именно match решает, что именно нужно сравнить -- конкретное значение или тип значения.
Например:
match value:
case list():
case []:
case np.ndarray():
case np_array:
и т.п.
и можно ли одновременно проверить сначала тип, а потом уже значение. (по аналогии с последовательностью проверок if).
И осветить классные методы тоже было бы хорошо. Где-то видел использование метода __match__. А если класс/функция стоит после case, то ее задача вернуть true/false после проверки значения.
В это все не углублялся, было бы интересно послушать умных людей )
pep 634, 635 и 636 там описано как это работают и примеры
@@hey-rg9lk вопрос не в том, чтобы почитать голые спеки. их видел.
а в том, что примеры оторваны от жизни. и напоминают тупую замену комбинации "if/else" на комбинацию "match/case". с единственным плюсом в предварительной проверке типов.
само собой, в качестве "плохих if'ов" приводятся конструкции, вопиюще требующие рефакторинга. да и сначала, разобраться в логике -- зачем делать ТАК, а не нормально.
а в качестве "хороших match" -- простейшие конструкции на уровне "если условие, то". или, в лучшем случае, простая замена switch.
с помощью match можно сделать аналогично нечитабельные деревья вложенных условий )
и/или, как показано в ролике, попасть на "никогда не срабатывающие условия".
(и про __match__ я написал из-за того, что в ролике затронули классы. но очень мало.)
повторюсь, я в это не углублялся. т.ч. вопрос не в том, "чего бы почитать про", а именно в "хотелось бы увидеть аналогичный ролик про,".
и именно реальные примеры использования, а не "если юзер админ и пароль 1111 и одмин не забанен, то". )
Привет Интересно как внедрять JavaScript и другой код типа /OpenAction или /AA в pdf файлы например я хочу добавить что б когда открываеш PDF файл мой код написаный на powershell закодированный в что то вроде base64 а еще интересно как все это дело обсфуцировать с помощю питона работа с pdf на низком уровне если покажеш буду благодарен
Невероятно круто!
Спасибо за фидбэк!
@@zproger Братан, вообще благодарю тебя за видосы: я на работе людей просвещаю по ним иногда :)
Видео познавательное, но вот в примере на 8:04 вместо конструкции match case можно одной строкой с тем же результатом:
print("Строка присутствует") if headers["content-type"] == "application/json" else print(headers)
ошибка будет KeyError
@@magixxmagixx2678 хватит тупить) ... headers.get("content-type") == ...
Мы ждем конфиги твоей системы
Первый раз слушу про этот оператор в Питоне. Я просто недавно влился в тему IT. Спасибо за полезную инфу
он только недавно появился, в последней версии по моему
Какой у тебя рабочий стол в Arch Linux?
Это оконный менеджер типа DWM (их десятки вообще говоря, мне нравятся QTile (настраивается через Python) и BSPWM (очень модульный)).
hyprland
Подсветка в пичарме лучше, но в виме размер окна больше, что приятнее глазам)
классная штука для матча енамов, словарей, списков, датаклассов
Давай теперь про ADT
PyCharm легче воспринимать. Но стоит иногда переключаться на Vim, потому что круто))
;))
Привет! Сделай пожалуйста обзор на установку arch linux и настройки его!😏😏💻💻
Видео супер полезное, но в последнем примере not in а не is not надо
Какая это оболочка арча? Очень зашла
Не понял как ссылку на комментарий вставить, поэтому повторюсь.
Это оконный менеджер типа DWM (их десятки вообще говоря, мне нравятся QTile (настраивается через Python) и BSPWM (очень модульный)).
hyprland
При всем уважении к vim, за Pycharm. Все-таки аутентичнее и привычнее так)
Да не
Тогда уже вс код
Что это за программа 0:11
bat -- это как cat только с подсветкой синтаксиса и нумерацией строк
pycharm лучше, подсветка и привычнее, спасибо за видео!
Где ж ты был раньше.
что за ide подскажите
VsCode вроде
pycharm и vim
те, кто использует match case как switch case в других языках - мега ошибаются. питон сделан так, что структура elif намного быстрее - этому вы спокойно можете найти доказательства. я сам switch case enjoyer и был опечален этим фактом.
спасибо автору, что дал немного надежды, что match case не бесполезен. но тут опять - хотелось бы тесты производительности, так как у питона с этим сложные отношения
в пайчарме конечно)
Что за IDE?
pycharm
Что за шрифт используют автор?
JetBrains
Такими темпами питон превратиться в плюсы по сложности
Спасибо за материал! Прошу прощения, но switch case != if else! Switch сразу перескакивает на тот функционал, на который ссылается элемент, в отличии от if else, который пройдет по всем своим блокам. Proof: ua-cam.com/video/fjUG_y5ZaL4/v-deo.html&si=Hy3bl7f11znFwRn1
Что это за gui?
Больше нравится пайчарм
перевод аржана?
кто это?) я не занимаюсь переводами
@@zproger год назад смотрел arjancodes на эту тему
В виме подсветка какая-то тусклая. Лучше в пчарме тогда
Благодарю
Спасибо за инфо, но очень тяжело на слух понимать тебя. Очень много повторяющихся слов паразитов: это, вот это, это, да этот... в итоге превращается все что ты сказал в кашу. А потом еще скрины кода быстро передергиваешь, а зато за ними втыкаешь чьи то удивленные рожы, но уже надольше по времени.
Посмотри зарубежные ролики, там даже если выключить видео, то на слух все будет понятно..
Это так для обратной связи, потому что сама информация, которой делишься - полезная, а вот подачу почётче видеть хотелось бы )
Отчасти поддерживаю) материал на канале оооочень интересный, смотрю все "до дыр", но хотелось бы, что бы ты вел повествование как-то поспокойнее что-ли, расслабленее)
Да инфа очень плотно подаётся и быстро, не успеваешь понять, нужно паузу тыкать, отматывать назад. Но это на вкус и цвет. А вот то что точно нужно добавить -- паузы между логическими блоками, или перебики.
В Pycharm
Благодарю!
Pycharm привычнее
В пайчарме мы и сами посмотрим. Лично я новое лучше воспринимаю в непривычной обёртке.
Мой пулемет и то медленней строчит...
я превзошел ваш пулемет 1000 лет назад)
Хер знает, объяснение нихрена непонятное. Быстро. Тараторит. Не люблю такую подачу.