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

КОМЕНТАРІ • 83

  • @akshinyolcuyev8729
    @akshinyolcuyev8729 6 місяців тому +6

    8:56 if user is not banned_list , разве не if user not in banned_list ?

  • @ByTheWay12
    @ByTheWay12 6 місяців тому +11

    Достаточно полезная информация. Спасибо!

    • @zproger
      @zproger  6 місяців тому +1

      Благодарю за фидбэк!

    • @sergeiivanov5739
      @sergeiivanov5739 5 місяців тому

      @@zprogerСпасибо за видео!!! Действительно, правда, ничего нового, но это действительно огромная тема. Уверен в вашем курсе есть и более продвинутые примеры :)

  • @ydjin3930
    @ydjin3930 6 місяців тому +5

    Очень странные примеры честно говоря. Почему то с самого начала автор говорит что мэтч кейс не просто свич, а в итоге много примеров аля свич..пример с енамкой или хедером. Вообще не очень понятно зачем прям целый объект конфига пихать в свич если хочется проверить только атрибут дебаг у которого просто не может быть логически значения отличного от bool, особенно если выставить дефолтное значение)
    А по итогу на галере будешь пользоваться конструкцией как свичем, периодически подсовывая в метч не 1 атрибут а несколько. Не встречал пока ни одного кейса когда нужно было бы дописать еще какое то условие в сам кейс, просто потому что это становится плохо читаемым кодом.
    Потом если мы используем метч кейс то у нас появляется двойная вложенность, а мы находимся в ооп, пишем метод для класса, уже тройная..В общем то упираемся в пеп с его длиной строки, от чего для лучшей читаемости хотя бы для себя любимого ты не будешь писать какие то сложные условия прям в кейсе.
    По итогу упрешься в то что лучше бы заинтересоваться паттернами проектирования и собрать фабрику или абстрактную фабрику чем бахать полотно из не читаемых кейсов со сложными условиями.
    Вообще кажется что примеры нужно приводить по делу. То есть не нужно лезть в хедер и пытаться там что то метчить, этим уже занимается твой фреймворк. Не нужно лезть в командную строку и метчить атрибуты, ведь люди уже придумали удобные инструменты для разработки cli (плюс при добавлении еще одного ключа кейсами себе в ногу выстрелишь, кажется что лучше последовательно обрабатывать атрибуты, а не перебирать их различные комбинации). Не нужно в метч кидать целый дикт и пытаться сметчить ключи, ведь есть схемы, датаклассы и тд, в которых можно с легкостью необычайной что то валидировать, если уж сильно хочется то метчи сами ключи, мы ведь не будем на каждый кейс писать новый дикт, который может быть бесконечно огромным.
    Резюме: Автор, не готовь детей к егэ, нужно писать правильные и продуманные примеры от которых не будешь валяться на полу от кринжа. Примеры просто не терпят никакой критики, а начинающие айтишнички уж тем более. По этому важнее показать чистый код для какой либо конструкции, потому что в твой видос вернется не 1 джун и заберет твои ошибки себе, чтобы потом с красным лицом и красным носиком переделывать, когда его МР не апрувнет ревьюер.

  • @user-cq4pe4vb7u
    @user-cq4pe4vb7u 6 місяців тому +1

    Классно!
    Хорошое и полезное видео :D

  • @terriorrabyte1655
    @terriorrabyte1655 6 місяців тому +6

    Я тоже за pycharm - мне легче воспринимать более контрастный цвет.
    Спасибо за показ примеров с множеством условий. Думаю теперь мой код станет более читаемым.
    *пошла убирать вложенность из match case...

    • @user-tx8lw5ti9m
      @user-tx8lw5ti9m 6 місяців тому

      Цветовую схему можно менять и далее делать кастомную практически в любом редакторе

  • @anton_skch
    @anton_skch 6 місяців тому

    Спасибо большое, раскрыл глаза на match. Я думал это и правда типичный switch.

  • @sqMax
    @sqMax 6 місяців тому +2

    Отличный разбор. Спасибо! Код больше нравится в pycharm

    • @zproger
      @zproger  6 місяців тому

      Спасибо

  • @sleepmode7592
    @sleepmode7592 6 місяців тому +3

    Видео супер!
    Хотелось увидеть туториал как сделать такое же оформления ОС
    Спасибо

  • @Neko-sr4wz
    @Neko-sr4wz 6 місяців тому +1

    Спасибо за крутой видос!

    • @zproger
      @zproger  6 місяців тому +1

      Благодарю!

  • @blsskid
    @blsskid 6 місяців тому

    Подскажите пожалуйста что за оболочка линукса. Я не очень шарю в оболочках, но очень уж понравился внешний вид оболочки как на видео. В комментариях увидел что то про оконные менеджеры. Но мне интересно как в общем сделать такой внешний вид, например панель задач и т.д.

  • @asmodey9883
    @asmodey9883 6 місяців тому

    Привет! В чём ты пишешь? В чём посоветуешь писать код для новичка в программировании на Пайтон?

  • @alexsychev961
    @alexsychev961 6 місяців тому

    Видео огонь! Почему на 2:03 .__repr__, а не !r в f-строке? Это было сделано чисто ради наглядности примера, или есть более глубокое значение?

  • @dmitriyangald
    @dmitriyangald 6 місяців тому +4

    В Pycharm есть presentation mode, в нём ещё более наглядно

    • @vffuunnyy
      @vffuunnyy 6 місяців тому

      Соглашусь. в presentation mode было бы славно

  • @coreiex
    @coreiex 6 місяців тому +3

    Полезная инфа, спасибо! А как также настроить вим, как у тебя?

    • @zproger
      @zproger  6 місяців тому

      Пока что это дефолт настройка nvchad, я еще не добавлял свои плагины)

  • @set_soul
    @set_soul 6 місяців тому +4

    Закидаю паттернов в код, пусть гуглят потом

  • @ggindinson
    @ggindinson 6 місяців тому

    Привет, отличное видео. Больше двух лет пишу на python, но часть паттернов не знал) Как ты относишься к django в текущем рынке айти, тк востребован практически на всех вакансиях, но при этом сейчас уже потихоньку умирает

  • @indlborm
    @indlborm 6 місяців тому +1

    Понравилось, спасибо!
    Было бы неплохо еще углубиться в проверку типов. Как именно match решает, что именно нужно сравнить -- конкретное значение или тип значения.
    Например:
    match value:
    case list():
    case []:
    case np.ndarray():
    case np_array:
    и т.п.
    и можно ли одновременно проверить сначала тип, а потом уже значение. (по аналогии с последовательностью проверок if).
    И осветить классные методы тоже было бы хорошо. Где-то видел использование метода __match__. А если класс/функция стоит после case, то ее задача вернуть true/false после проверки значения.
    В это все не углублялся, было бы интересно послушать умных людей )

    • @hey-rg9lk
      @hey-rg9lk 6 місяців тому +1

      pep 634, 635 и 636 там описано как это работают и примеры

    • @indlborm
      @indlborm 6 місяців тому

      @@hey-rg9lk вопрос не в том, чтобы почитать голые спеки. их видел.
      а в том, что примеры оторваны от жизни. и напоминают тупую замену комбинации "if/else" на комбинацию "match/case". с единственным плюсом в предварительной проверке типов.
      само собой, в качестве "плохих if'ов" приводятся конструкции, вопиюще требующие рефакторинга. да и сначала, разобраться в логике -- зачем делать ТАК, а не нормально.
      а в качестве "хороших match" -- простейшие конструкции на уровне "если условие, то". или, в лучшем случае, простая замена switch.
      с помощью match можно сделать аналогично нечитабельные деревья вложенных условий )
      и/или, как показано в ролике, попасть на "никогда не срабатывающие условия".
      (и про __match__ я написал из-за того, что в ролике затронули классы. но очень мало.)
      повторюсь, я в это не углублялся. т.ч. вопрос не в том, "чего бы почитать про", а именно в "хотелось бы увидеть аналогичный ролик про,".
      и именно реальные примеры использования, а не "если юзер админ и пароль 1111 и одмин не забанен, то". )

  • @luispakvard5681
    @luispakvard5681 6 місяців тому

    Привет Интересно как внедрять JavaScript и другой код типа /OpenAction или /AA в pdf файлы например я хочу добавить что б когда открываеш PDF файл мой код написаный на powershell закодированный в что то вроде base64 а еще интересно как все это дело обсфуцировать с помощю питона работа с pdf на низком уровне если покажеш буду благодарен

  • @TeverRus
    @TeverRus 6 місяців тому

    Невероятно круто!

    • @zproger
      @zproger  6 місяців тому

      Спасибо за фидбэк!

    • @TeverRus
      @TeverRus 6 місяців тому

      @@zproger Братан, вообще благодарю тебя за видосы: я на работе людей просвещаю по ним иногда :)

  • @baskakus
    @baskakus 6 місяців тому +2

    Видео познавательное, но вот в примере на 8:04 вместо конструкции match case можно одной строкой с тем же результатом:
    print("Строка присутствует") if headers["content-type"] == "application/json" else print(headers)

    • @magixxmagixx2678
      @magixxmagixx2678 6 місяців тому

      ошибка будет KeyError

    • @artpro9191
      @artpro9191 6 місяців тому

      @@magixxmagixx2678 хватит тупить) ... headers.get("content-type") == ...

  • @treehacks4701
    @treehacks4701 6 місяців тому +3

    Мы ждем конфиги твоей системы

  • @hisokajoker7991
    @hisokajoker7991 6 місяців тому +4

    Первый раз слушу про этот оператор в Питоне. Я просто недавно влился в тему IT. Спасибо за полезную инфу

    • @leniviy_uebok
      @leniviy_uebok 6 місяців тому

      он только недавно появился, в последней версии по моему

  • @ithelper-it591
    @ithelper-it591 6 місяців тому +2

    Какой у тебя рабочий стол в Arch Linux?

    • @vladislavdudnikov26
      @vladislavdudnikov26 6 місяців тому +1

      Это оконный менеджер типа DWM (их десятки вообще говоря, мне нравятся QTile (настраивается через Python) и BSPWM (очень модульный)).

    • @slashfast
      @slashfast 6 місяців тому +1

      hyprland

  • @grayich
    @grayich 6 місяців тому

    Подсветка в пичарме лучше, но в виме размер окна больше, что приятнее глазам)

  • @luwqz1
    @luwqz1 6 місяців тому

    классная штука для матча енамов, словарей, списков, датаклассов

  • @nikitatimofeenko9351
    @nikitatimofeenko9351 6 місяців тому

    Давай теперь про ADT

  • @possumcode
    @possumcode 3 місяці тому

    PyCharm легче воспринимать. Но стоит иногда переключаться на Vim, потому что круто))

  • @Sliwcom
    @Sliwcom 6 місяців тому

    Привет! Сделай пожалуйста обзор на установку arch linux и настройки его!😏😏💻💻

  • @pashkalopatov1983
    @pashkalopatov1983 6 місяців тому

    Видео супер полезное, но в последнем примере not in а не is not надо

  • @wester35
    @wester35 6 місяців тому +1

    Какая это оболочка арча? Очень зашла

    • @vladislavdudnikov26
      @vladislavdudnikov26 6 місяців тому

      Не понял как ссылку на комментарий вставить, поэтому повторюсь.
      Это оконный менеджер типа DWM (их десятки вообще говоря, мне нравятся QTile (настраивается через Python) и BSPWM (очень модульный)).

    • @slashfast
      @slashfast 6 місяців тому

      hyprland

  • @ZZZMerk
    @ZZZMerk 6 місяців тому +2

    При всем уважении к vim, за Pycharm. Все-таки аутентичнее и привычнее так)

    • @eagold
      @eagold 6 місяців тому

      Да не
      Тогда уже вс код

  • @Kobachok367
    @Kobachok367 6 місяців тому +1

    Что это за программа 0:11

    • @kaurt9954
      @kaurt9954 6 місяців тому +1

      bat -- это как cat только с подсветкой синтаксиса и нумерацией строк

  • @mike7105mike
    @mike7105mike 6 місяців тому

    pycharm лучше, подсветка и привычнее, спасибо за видео!

  • @RM-xb3jk
    @RM-xb3jk 6 місяців тому

    Где ж ты был раньше.

  • @cuprum13
    @cuprum13 6 місяців тому

    что за ide подскажите

    • @Neko-sr4wz
      @Neko-sr4wz 6 місяців тому

      VsCode вроде

    • @slashfast
      @slashfast 6 місяців тому

      pycharm и vim

  • @docholo
    @docholo 6 місяців тому

    те, кто использует match case как switch case в других языках - мега ошибаются. питон сделан так, что структура elif намного быстрее - этому вы спокойно можете найти доказательства. я сам switch case enjoyer и был опечален этим фактом.
    спасибо автору, что дал немного надежды, что match case не бесполезен. но тут опять - хотелось бы тесты производительности, так как у питона с этим сложные отношения

  • @Jastcher
    @Jastcher 5 місяців тому

    в пайчарме конечно)

  • @bezdrom5500
    @bezdrom5500 6 місяців тому

    Что за IDE?

  • @maximpng
    @maximpng 6 місяців тому

    Что за шрифт используют автор?

    • @zproger
      @zproger  6 місяців тому

      JetBrains

  • @user-tx8lw5ti9m
    @user-tx8lw5ti9m 6 місяців тому

    Такими темпами питон превратиться в плюсы по сложности

  • @FULLLIFE4ever
    @FULLLIFE4ever 6 місяців тому

    Спасибо за материал! Прошу прощения, но switch case != if else! Switch сразу перескакивает на тот функционал, на который ссылается элемент, в отличии от if else, который пройдет по всем своим блокам. Proof: ua-cam.com/video/fjUG_y5ZaL4/v-deo.html&si=Hy3bl7f11znFwRn1

  • @palyaros02
    @palyaros02 6 місяців тому

    Что это за gui?

  • @user-ln5qy5gx5d
    @user-ln5qy5gx5d 6 місяців тому

    Больше нравится пайчарм

  • @dann1kid
    @dann1kid 6 місяців тому

    перевод аржана?

    • @zproger
      @zproger  6 місяців тому

      кто это?) я не занимаюсь переводами

    • @dann1kid
      @dann1kid 6 місяців тому

      @@zproger год назад смотрел arjancodes на эту тему

  • @super_man-ArtOfWar3
    @super_man-ArtOfWar3 6 місяців тому

    В виме подсветка какая-то тусклая. Лучше в пчарме тогда

    • @zproger
      @zproger  6 місяців тому

      Благодарю

  • @AJG54143
    @AJG54143 6 місяців тому +2

    Спасибо за инфо, но очень тяжело на слух понимать тебя. Очень много повторяющихся слов паразитов: это, вот это, это, да этот... в итоге превращается все что ты сказал в кашу. А потом еще скрины кода быстро передергиваешь, а зато за ними втыкаешь чьи то удивленные рожы, но уже надольше по времени.
    Посмотри зарубежные ролики, там даже если выключить видео, то на слух все будет понятно..
    Это так для обратной связи, потому что сама информация, которой делишься - полезная, а вот подачу почётче видеть хотелось бы )

    • @Achannelife
      @Achannelife 6 місяців тому

      Отчасти поддерживаю) материал на канале оооочень интересный, смотрю все "до дыр", но хотелось бы, что бы ты вел повествование как-то поспокойнее что-ли, расслабленее)

    • @grayich
      @grayich 6 місяців тому +2

      Да инфа очень плотно подаётся и быстро, не успеваешь понять, нужно паузу тыкать, отматывать назад. Но это на вкус и цвет. А вот то что точно нужно добавить -- паузы между логическими блоками, или перебики.

  • @ShadowStormlq5mwdasd
    @ShadowStormlq5mwdasd 6 місяців тому

    В Pycharm

    • @zproger
      @zproger  6 місяців тому

      Благодарю!

  • @iJaVolo
    @iJaVolo 6 місяців тому

    Pycharm привычнее

  • @KolyaK9
    @KolyaK9 6 місяців тому

    В пайчарме мы и сами посмотрим. Лично я новое лучше воспринимаю в непривычной обёртке.

  • @_Kruzo_
    @_Kruzo_ 4 місяці тому

    Мой пулемет и то медленней строчит...

    • @zproger
      @zproger  4 місяці тому

      я превзошел ваш пулемет 1000 лет назад)

  • @GolosCD1988
    @GolosCD1988 6 місяців тому +3

    Хер знает, объяснение нихрена непонятное. Быстро. Тараторит. Не люблю такую подачу.