Вот зачем нужен Match Case в Python | Реальное предназначение оператора

  Рет қаралды 16,754

ZProger [ IT ]

ZProger [ IT ]

Күн бұрын

⭐ Курс ООП и Приват канал: 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 - Обработка параметров запуска и дополнительные условия

Пікірлер: 83
@akshinyolcuyev8729
@akshinyolcuyev8729 6 ай бұрын
8:56 if user is not banned_list , разве не if user not in banned_list ?
@ByTheWay12
@ByTheWay12 6 ай бұрын
Достаточно полезная информация. Спасибо!
@zproger
@zproger 6 ай бұрын
Благодарю за фидбэк!
@sergeiivanov5739
@sergeiivanov5739 5 ай бұрын
@@zprogerСпасибо за видео!!! Действительно, правда, ничего нового, но это действительно огромная тема. Уверен в вашем курсе есть и более продвинутые примеры :)
@terriorrabyte1655
@terriorrabyte1655 6 ай бұрын
Я тоже за pycharm - мне легче воспринимать более контрастный цвет. Спасибо за показ примеров с множеством условий. Думаю теперь мой код станет более читаемым. *пошла убирать вложенность из match case...
@user-tx8lw5ti9m
@user-tx8lw5ti9m 6 ай бұрын
Цветовую схему можно менять и далее делать кастомную практически в любом редакторе
@ydjin3930
@ydjin3930 6 ай бұрын
Очень странные примеры честно говоря. Почему то с самого начала автор говорит что мэтч кейс не просто свич, а в итоге много примеров аля свич..пример с енамкой или хедером. Вообще не очень понятно зачем прям целый объект конфига пихать в свич если хочется проверить только атрибут дебаг у которого просто не может быть логически значения отличного от bool, особенно если выставить дефолтное значение) А по итогу на галере будешь пользоваться конструкцией как свичем, периодически подсовывая в метч не 1 атрибут а несколько. Не встречал пока ни одного кейса когда нужно было бы дописать еще какое то условие в сам кейс, просто потому что это становится плохо читаемым кодом. Потом если мы используем метч кейс то у нас появляется двойная вложенность, а мы находимся в ооп, пишем метод для класса, уже тройная..В общем то упираемся в пеп с его длиной строки, от чего для лучшей читаемости хотя бы для себя любимого ты не будешь писать какие то сложные условия прям в кейсе. По итогу упрешься в то что лучше бы заинтересоваться паттернами проектирования и собрать фабрику или абстрактную фабрику чем бахать полотно из не читаемых кейсов со сложными условиями. Вообще кажется что примеры нужно приводить по делу. То есть не нужно лезть в хедер и пытаться там что то метчить, этим уже занимается твой фреймворк. Не нужно лезть в командную строку и метчить атрибуты, ведь люди уже придумали удобные инструменты для разработки cli (плюс при добавлении еще одного ключа кейсами себе в ногу выстрелишь, кажется что лучше последовательно обрабатывать атрибуты, а не перебирать их различные комбинации). Не нужно в метч кидать целый дикт и пытаться сметчить ключи, ведь есть схемы, датаклассы и тд, в которых можно с легкостью необычайной что то валидировать, если уж сильно хочется то метчи сами ключи, мы ведь не будем на каждый кейс писать новый дикт, который может быть бесконечно огромным. Резюме: Автор, не готовь детей к егэ, нужно писать правильные и продуманные примеры от которых не будешь валяться на полу от кринжа. Примеры просто не терпят никакой критики, а начинающие айтишнички уж тем более. По этому важнее показать чистый код для какой либо конструкции, потому что в твой видос вернется не 1 джун и заберет твои ошибки себе, чтобы потом с красным лицом и красным носиком переделывать, когда его МР не апрувнет ревьюер.
@anton_skch
@anton_skch 6 ай бұрын
Спасибо большое, раскрыл глаза на match. Я думал это и правда типичный switch.
@sqMax
@sqMax 6 ай бұрын
Отличный разбор. Спасибо! Код больше нравится в pycharm
@zproger
@zproger 6 ай бұрын
Спасибо
@user-cq4pe4vb7u
@user-cq4pe4vb7u 6 ай бұрын
Классно! Хорошое и полезное видео :D
@sleepmode7592
@sleepmode7592 6 ай бұрын
Видео супер! Хотелось увидеть туториал как сделать такое же оформления ОС Спасибо
@blsskid
@blsskid 6 ай бұрын
Подскажите пожалуйста что за оболочка линукса. Я не очень шарю в оболочках, но очень уж понравился внешний вид оболочки как на видео. В комментариях увидел что то про оконные менеджеры. Но мне интересно как в общем сделать такой внешний вид, например панель задач и т.д.
@indlborm
@indlborm 6 ай бұрын
Понравилось, спасибо! Было бы неплохо еще углубиться в проверку типов. Как именно match решает, что именно нужно сравнить -- конкретное значение или тип значения. Например: match value: case list(): case []: case np.ndarray(): case np_array: и т.п. и можно ли одновременно проверить сначала тип, а потом уже значение. (по аналогии с последовательностью проверок if). И осветить классные методы тоже было бы хорошо. Где-то видел использование метода __match__. А если класс/функция стоит после case, то ее задача вернуть true/false после проверки значения. В это все не углублялся, было бы интересно послушать умных людей )
@hey-rg9lk
@hey-rg9lk 6 ай бұрын
pep 634, 635 и 636 там описано как это работают и примеры
@indlborm
@indlborm 6 ай бұрын
@@hey-rg9lk вопрос не в том, чтобы почитать голые спеки. их видел. а в том, что примеры оторваны от жизни. и напоминают тупую замену комбинации "if/else" на комбинацию "match/case". с единственным плюсом в предварительной проверке типов. само собой, в качестве "плохих if'ов" приводятся конструкции, вопиюще требующие рефакторинга. да и сначала, разобраться в логике -- зачем делать ТАК, а не нормально. а в качестве "хороших match" -- простейшие конструкции на уровне "если условие, то". или, в лучшем случае, простая замена switch. с помощью match можно сделать аналогично нечитабельные деревья вложенных условий ) и/или, как показано в ролике, попасть на "никогда не срабатывающие условия". (и про __match__ я написал из-за того, что в ролике затронули классы. но очень мало.) повторюсь, я в это не углублялся. т.ч. вопрос не в том, "чего бы почитать про", а именно в "хотелось бы увидеть аналогичный ролик про,". и именно реальные примеры использования, а не "если юзер админ и пароль 1111 и одмин не забанен, то". )
@Neko-sr4wz
@Neko-sr4wz 6 ай бұрын
Спасибо за крутой видос!
@zproger
@zproger 6 ай бұрын
Благодарю!
@asmodey9883
@asmodey9883 6 ай бұрын
Привет! В чём ты пишешь? В чём посоветуешь писать код для новичка в программировании на Пайтон?
@baskakus
@baskakus 6 ай бұрын
Видео познавательное, но вот в примере на 8:04 вместо конструкции match case можно одной строкой с тем же результатом: print("Строка присутствует") if headers["content-type"] == "application/json" else print(headers)
@magixxmagixx2678
@magixxmagixx2678 6 ай бұрын
ошибка будет KeyError
@artpro9191
@artpro9191 5 ай бұрын
@@magixxmagixx2678 хватит тупить) ... headers.get("content-type") == ...
@set_soul
@set_soul 6 ай бұрын
Закидаю паттернов в код, пусть гуглят потом
@alexsychev961
@alexsychev961 6 ай бұрын
Видео огонь! Почему на 2:03 .__repr__, а не !r в f-строке? Это было сделано чисто ради наглядности примера, или есть более глубокое значение?
@dmitriyangald
@dmitriyangald 6 ай бұрын
В Pycharm есть presentation mode, в нём ещё более наглядно
@vffuunnyy
@vffuunnyy 6 ай бұрын
Соглашусь. в presentation mode было бы славно
@hisokajoker7991
@hisokajoker7991 6 ай бұрын
Первый раз слушу про этот оператор в Питоне. Я просто недавно влился в тему IT. Спасибо за полезную инфу
@leniviy_uebok
@leniviy_uebok 6 ай бұрын
он только недавно появился, в последней версии по моему
@TeverRus
@TeverRus 6 ай бұрын
Невероятно круто!
@zproger
@zproger 6 ай бұрын
Спасибо за фидбэк!
@TeverRus
@TeverRus 6 ай бұрын
@@zproger Братан, вообще благодарю тебя за видосы: я на работе людей просвещаю по ним иногда :)
@ggindinson
@ggindinson 6 ай бұрын
Привет, отличное видео. Больше двух лет пишу на python, но часть паттернов не знал) Как ты относишься к django в текущем рынке айти, тк востребован практически на всех вакансиях, но при этом сейчас уже потихоньку умирает
@luispakvard5681
@luispakvard5681 6 ай бұрын
Привет Интересно как внедрять JavaScript и другой код типа /OpenAction или /AA в pdf файлы например я хочу добавить что б когда открываеш PDF файл мой код написаный на powershell закодированный в что то вроде base64 а еще интересно как все это дело обсфуцировать с помощю питона работа с pdf на низком уровне если покажеш буду благодарен
@treehacks4701
@treehacks4701 6 ай бұрын
Мы ждем конфиги твоей системы
@coreiex
@coreiex 6 ай бұрын
Полезная инфа, спасибо! А как также настроить вим, как у тебя?
@zproger
@zproger 6 ай бұрын
Пока что это дефолт настройка nvchad, я еще не добавлял свои плагины)
@luwqz1
@luwqz1 6 ай бұрын
классная штука для матча енамов, словарей, списков, датаклассов
@grayich
@grayich 6 ай бұрын
Подсветка в пичарме лучше, но в виме размер окна больше, что приятнее глазам)
@possumcode
@possumcode 3 ай бұрын
PyCharm легче воспринимать. Но стоит иногда переключаться на Vim, потому что круто))
@zproger
@zproger 3 ай бұрын
;))
@docholo
@docholo 6 ай бұрын
те, кто использует match case как switch case в других языках - мега ошибаются. питон сделан так, что структура elif намного быстрее - этому вы спокойно можете найти доказательства. я сам switch case enjoyer и был опечален этим фактом. спасибо автору, что дал немного надежды, что match case не бесполезен. но тут опять - хотелось бы тесты производительности, так как у питона с этим сложные отношения
@pashkalopatov1983
@pashkalopatov1983 6 ай бұрын
Видео супер полезное, но в последнем примере not in а не is not надо
@nikitatimofeenko9351
@nikitatimofeenko9351 6 ай бұрын
Давай теперь про ADT
@Sliwcom
@Sliwcom 6 ай бұрын
Привет! Сделай пожалуйста обзор на установку arch linux и настройки его!😏😏💻💻
@mike7105mike
@mike7105mike 6 ай бұрын
pycharm лучше, подсветка и привычнее, спасибо за видео!
@ZZZMerk
@ZZZMerk 6 ай бұрын
При всем уважении к vim, за Pycharm. Все-таки аутентичнее и привычнее так)
@eagold
@eagold 6 ай бұрын
Да не Тогда уже вс код
@ithelper-it591
@ithelper-it591 6 ай бұрын
Какой у тебя рабочий стол в Arch Linux?
@vladislavdudnikov26
@vladislavdudnikov26 6 ай бұрын
Это оконный менеджер типа DWM (их десятки вообще говоря, мне нравятся QTile (настраивается через Python) и BSPWM (очень модульный)).
@slashfast
@slashfast 6 ай бұрын
hyprland
@RM-xb3jk
@RM-xb3jk 6 ай бұрын
Где ж ты был раньше.
@Jastcher
@Jastcher 5 ай бұрын
в пайчарме конечно)
@FULLLIFE4ever
@FULLLIFE4ever 6 ай бұрын
Спасибо за материал! Прошу прощения, но switch case != if else! Switch сразу перескакивает на тот функционал, на который ссылается элемент, в отличии от if else, который пройдет по всем своим блокам. Proof: kzfaq.info/get/bejne/nNCFesKqmsDFfGg.html&si=Hy3bl7f11znFwRn1
@wester35
@wester35 6 ай бұрын
Какая это оболочка арча? Очень зашла
@vladislavdudnikov26
@vladislavdudnikov26 6 ай бұрын
Не понял как ссылку на комментарий вставить, поэтому повторюсь. Это оконный менеджер типа DWM (их десятки вообще говоря, мне нравятся QTile (настраивается через Python) и BSPWM (очень модульный)).
@slashfast
@slashfast 6 ай бұрын
hyprland
@user-tx8lw5ti9m
@user-tx8lw5ti9m 6 ай бұрын
Такими темпами питон превратиться в плюсы по сложности
@user-ln5qy5gx5d
@user-ln5qy5gx5d 6 ай бұрын
Больше нравится пайчарм
@Kobachok367
@Kobachok367 6 ай бұрын
Что это за программа 0:11
@kaurt9954
@kaurt9954 6 ай бұрын
bat -- это как cat только с подсветкой синтаксиса и нумерацией строк
@AJG54143
@AJG54143 6 ай бұрын
Спасибо за инфо, но очень тяжело на слух понимать тебя. Очень много повторяющихся слов паразитов: это, вот это, это, да этот... в итоге превращается все что ты сказал в кашу. А потом еще скрины кода быстро передергиваешь, а зато за ними втыкаешь чьи то удивленные рожы, но уже надольше по времени. Посмотри зарубежные ролики, там даже если выключить видео, то на слух все будет понятно.. Это так для обратной связи, потому что сама информация, которой делишься - полезная, а вот подачу почётче видеть хотелось бы )
@Achannelife
@Achannelife 6 ай бұрын
Отчасти поддерживаю) материал на канале оооочень интересный, смотрю все "до дыр", но хотелось бы, что бы ты вел повествование как-то поспокойнее что-ли, расслабленее)
@grayich
@grayich 6 ай бұрын
Да инфа очень плотно подаётся и быстро, не успеваешь понять, нужно паузу тыкать, отматывать назад. Но это на вкус и цвет. А вот то что точно нужно добавить -- паузы между логическими блоками, или перебики.
@cuprum13
@cuprum13 6 ай бұрын
что за ide подскажите
@Neko-sr4wz
@Neko-sr4wz 6 ай бұрын
VsCode вроде
@slashfast
@slashfast 6 ай бұрын
pycharm и vim
@bezdrom5500
@bezdrom5500 5 ай бұрын
Что за IDE?
@zproger
@zproger 5 ай бұрын
pycharm
@maximpng
@maximpng 6 ай бұрын
Что за шрифт используют автор?
@zproger
@zproger 6 ай бұрын
JetBrains
@ShadowStormlq5mwdasd
@ShadowStormlq5mwdasd 6 ай бұрын
В Pycharm
@zproger
@zproger 6 ай бұрын
Благодарю!
@iJaVolo
@iJaVolo 6 ай бұрын
Pycharm привычнее
@super_man-ArtOfWar3
@super_man-ArtOfWar3 6 ай бұрын
В виме подсветка какая-то тусклая. Лучше в пчарме тогда
@zproger
@zproger 6 ай бұрын
Благодарю
@dann1kid
@dann1kid 6 ай бұрын
перевод аржана?
@zproger
@zproger 6 ай бұрын
кто это?) я не занимаюсь переводами
@dann1kid
@dann1kid 6 ай бұрын
@@zproger год назад смотрел arjancodes на эту тему
@palyaros02
@palyaros02 6 ай бұрын
Что это за gui?
@KolyaK9
@KolyaK9 6 ай бұрын
В пайчарме мы и сами посмотрим. Лично я новое лучше воспринимаю в непривычной обёртке.
@_Kruzo_
@_Kruzo_ 3 ай бұрын
Мой пулемет и то медленней строчит...
@zproger
@zproger 3 ай бұрын
я превзошел ваш пулемет 1000 лет назад)
@GolosCD1988
@GolosCD1988 6 ай бұрын
Хер знает, объяснение нихрена непонятное. Быстро. Тараторит. Не люблю такую подачу.
10 признаков того, что вы новичок в Python
4:59
Super sport🤯
00:15
Lexa_Merin
Рет қаралды 20 МЛН
MOM TURNED THE NOODLES PINK😱
00:31
JULI_PROETO
Рет қаралды 17 МЛН
100😭🎉 #thankyou
00:28
はじめしゃちょー(hajime)
Рет қаралды 46 МЛН
Пишем свой движок 3D-графики
19:25
Onigiri
Рет қаралды 531 М.
Отсканировал куар код на новой 100 рублёвой купюре, и вот что получилось...
2:50
Интересная информация из открытых источников
Рет қаралды 3,9 М.