Первый декоратор, разбираемся с написанием

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 ธ.ค. 2024

ความคิดเห็น • 83

  • @viktorsokolov8153
    @viktorsokolov8153 2 ปีที่แล้ว +24

    Уважаемый автор, у вас безусловный преподавательский талант. Это видно по многим видео. В каждом вы не спеша очень доступно разъясняете новичкам тему. И, что важно, морально поддерживаете их. Спасибо за ваш труд и желание поделиться знаниями!
    По теме декораторов. Понимание для меня приходило последовательно. Я познакомился с ними 3 месяца назад. Нельзя сказать, что объяснение (на другом канале) было плохое. Скорее, просто понадобилось определенное время, чтобы переварить это. Наконец-то пищеварение справилось) Спасибо автору канала.

    • @Miron_Nicolaevich
      @Miron_Nicolaevich ปีที่แล้ว +1

      полностью согласен. у меня имеется доступ к платным курсам от коробки, там эти информацию упаковали в 9 минут. и в основном автор просто диктует что пишет. а не пытается объяснять свои действия. и нет, они не так уж плохи, но автор Python Russia пишет видео от души так сказать)

  • @randmi8047
    @randmi8047 14 วันที่ผ่านมา

    Большое спасибо
    Это самое понятное объяснение которое я нашел
    Теперь я прозрел!!!

    • @PythonRussian
      @PythonRussian  13 วันที่ผ่านมา

      встань и иди! кодить!

  • @АннаПетрова-и1з
    @АннаПетрова-и1з 2 ปีที่แล้ว +10

    Спасибо огромное за уроки, безумно полезно и доступно!

    • @PythonRussian
      @PythonRussian  2 ปีที่แล้ว +2

      благодарю за теплые слова. К сожалению, сейчас совсем нет времени на новые видео, но после нового года постараюсь еще пару полезностей заснять.

  • @Саня_КИРПИЧ13
    @Саня_КИРПИЧ13 2 ปีที่แล้ว +2

    Вот просто большое спасибо, никакой воды, все понятным языком, как для кирпича все очень даже понял, автору большое спасибо

  • @Miron_Nicolaevich
    @Miron_Nicolaevich ปีที่แล้ว +1

    не жалко писать коменты автору, который делает очень годный контент!

  • @y18kotov
    @y18kotov 2 ปีที่แล้ว +3

    С 100500 попытки стало понятно. Спасибо!

  • @Yuriy_ko
    @Yuriy_ko ปีที่แล้ว +1

    Спасибо за урок! После просмотра, закрепил написанием собственного декоратора и опробовал на разных функциях. Осталось переварить, зачем он нужен(практическое применение), но это дело времени и много практики.

  • @_Kruzo_
    @_Kruzo_ 2 ปีที่แล้ว +2

    Все доступно и без лишней воды....хотя, в фоне как будто вода льется перед микрофоном :))

  • @artyomk1476
    @artyomk1476 ปีที่แล้ว

    ТЫ просто ТОП! Спасибо за то что так круто объясняешь!!!!!

  • @IlyaIlya_lopkop
    @IlyaIlya_lopkop 3 ปีที่แล้ว +5

    Это не видео, а бомба!

    • @PythonRussian
      @PythonRussian  3 ปีที่แล้ว +1

      не уверен, что ты искренен=) по-моему немного путано получилось и не понятно

    • @IlyaIlya_lopkop
      @IlyaIlya_lopkop 3 ปีที่แล้ว +2

      @@PythonRussian нуу не знаю, я просто декораторы уже проходил, поэтому мне все понятно было. Это надо спросить у тех кто впервые о таком слышит

  • @nons5761
    @nons5761 ปีที่แล้ว

    лучшее обьяснение, обожаю твой канал

  • @ПавелПрохоров-е9ц
    @ПавелПрохоров-е9ц 4 หลายเดือนก่อน

    Спасибо за объяснение!

  • @МаксимПетровский-н2г
    @МаксимПетровский-н2г 5 หลายเดือนก่อน +2

    Хороший разбор, спасибо!

  • @donfedor007
    @donfedor007 2 ปีที่แล้ว +3

    Спасибо Вам за видео! Очень понятно и интересно!

  • @abra-kadabra5000
    @abra-kadabra5000 ปีที่แล้ว

    Спасибо! Действительно очень круто объясняете, это талант!

  • @SoloveY1990
    @SoloveY1990 ปีที่แล้ว

    Большое спасибо! Достаточно сложно понять с первого раза что произошло)) понял, что декоратор это некий апгрейд существующих или даже импортированных функций под наши задачи.

  • @ValeriyM_46
    @ValeriyM_46 ปีที่แล้ว

    отлично объяснил ))) эффект прозрения получил , спасибо)).подпись: горемыка )))

  • @sabotage711
    @sabotage711 หลายเดือนก่อน

    Лучший👍

  • @jackhopckien4566
    @jackhopckien4566 ปีที่แล้ว

    Спасибо. Подробно и понятно.

  • @kumushabdurahmanova7822
    @kumushabdurahmanova7822 3 ปีที่แล้ว +3

    Ждем вторую часть!)

    • @PythonRussian
      @PythonRussian  3 ปีที่แล้ว +1

      пока времени не хватает, но сделаю

  • @andreiart9160
    @andreiart9160 2 ปีที่แล้ว

    Контент - пушка_ракета!

  • @rpuropu
    @rpuropu 3 ปีที่แล้ว +2

    сегодня пойду под твой канал пару общих тетрадок куплю).. ьуду раскрывать темы до конца, со всеми ссылками)

    • @PythonRussian
      @PythonRussian  3 ปีที่แล้ว +3

      вот это светлая мысль! не потому что канал, а то что будешь конспектировать и читать по ссылкам и в книжках - это просто круто помогает в развитии. У самого старые конспекты лежат по питону =) Отработали свое и принесли свою пользу.

    • @ОлександрКатюха
      @ОлександрКатюха 3 ปีที่แล้ว +1

      Я это с самого начала делаю👍🏻

  • @CRESHT
    @CRESHT 2 ปีที่แล้ว

    Круто! Кое что дошло, но практика все решает

    • @PythonRussian
      @PythonRussian  2 ปีที่แล้ว

      да, без практики в нашем деле никуда

  • @stevem4806
    @stevem4806 ปีที่แล้ว +1

    Спасибо!

  • @barma1309
    @barma1309 2 ปีที่แล้ว

    Прекрасно!!!

  • @igormatveev8355
    @igormatveev8355 9 หลายเดือนก่อน +3

    большое спасибо за материал, но как же тихо, это жесть

    • @Prodigyqqq
      @Prodigyqqq 7 หลายเดือนก่อน

      Весь ютуб лучше смотреть с включенной тонокомпенсацией в Realtek

  • @smbdwnstldme
    @smbdwnstldme 3 ปีที่แล้ว +2

    Крутая идея - создать декоратор, который заворачивает функцию в thread и запускает его.

    • @PythonRussian
      @PythonRussian  3 ปีที่แล้ว +1

      идея хорошая, главное понимать, что там в функции будет происходить и не забывать про GIL

  • @Laserball74
    @Laserball74 2 ปีที่แล้ว +1

    Просьба в следующих видео сделать шрифт по крупнее так как Вас смотрят люди и с плохим зрением!

    • @PythonRussian
      @PythonRussian  2 ปีที่แล้ว +1

      да, я стараюсь, просто если сильно увеличивать то на экране мало входит и приходится скроллить туда сюда.

  • @drarov91
    @drarov91 ปีที่แล้ว

    @Python_Russian, как вы прикрепляете функцию print в конце строки и она автоматически встает в начало?

    • @PythonRussian
      @PythonRussian  ปีที่แล้ว +1

      пичарм так умеет, у меня есть видео по комбинациям клавиш и фишкам.

  • @725etw7w
    @725etw7w ปีที่แล้ว

    Здравствуйте, почему мы не можем вызывать враппер с тремя аргументами и третьм передавать func(как объект), и всё будет одно и тоже? Или это так делать не надо?

  • @ПавелПрохоров-е9ц
    @ПавелПрохоров-е9ц 7 หลายเดือนก่อน

    Спасибо ! А почему в выводе значение основной функции (5) идёт после "обертки " декоратора "до" и "после" ?

  • @ВалерийБарсов-ы1я
    @ВалерийБарсов-ы1я ปีที่แล้ว

    Спасибо за урок. Вы хорошо объяснили что такое декоратор, но не объяснили зачем он нужен. из урока ясно, что функцию sum() можно использовать без всех этих танцев с бубном. Так что урок либо следует переработать, либо сделать предварительное введение в декораторы где рассказать, зачем они нужны.

  • @Himera1983
    @Himera1983 8 หลายเดือนก่อน

    А почему оператор return невыходит использовать в If если она не внутри функции?

    • @PythonRussian
      @PythonRussian  8 หลายเดือนก่อน

      ретурн же это возврат, а если не из функции то откуда возврат?

    • @Himera1983
      @Himera1983 8 หลายเดือนก่อน

      @@PythonRussian согласен. Но в книге грокаем алгоритмы ретурн в блоке if и это условие не в блоке функции . И пишут запустите этот код. Так же есть тоже самое но уже в блоке функции.

    • @Himera1983
      @Himera1983 8 หลายเดือนก่อน

      @@PythonRussian книга грокаем алгоритмы в параграфе алгоритм дейкстры

    • @Himera1983
      @Himera1983 8 หลายเดือนก่อน

      @@PythonRussian большое спасибо что ответили .

    • @Himera1983
      @Himera1983 8 หลายเดือนก่อน

      @@PythonRussian согласен . Значит в книге ошибка и эта книга не та с которой можно чему то учиться ?

  • @alw-3052
    @alw-3052 2 ปีที่แล้ว

    Спасибо. Не сразу, но разобрался.
    Получается мы первой командой function = logger(summ):
    1. Передаем адрес объекта-функции summ в функцию logger
    2. Создаем объект-функцию function, которая ссылается на внутреннюю функцию wrapper
    И теперь по факту командой function(2, 3) мы вызываем функцию wrapper(2, 3), в которой уже инициализирован объект-функция summ.
    Но возник вопрос. А в чем преимущество декоратора от вот такого с виду более простого решения?
    ##############################
    def logger_new(func, a, b):
    print(f'{func.__name__} started_2')
    result = func(a,b)
    print(f'{func.__name__} finished_2')
    return result
    print(logger_new(summ, 2, 3))
    ##############################

    • @PythonRussian
      @PythonRussian  2 ปีที่แล้ว +1

      Первое преимущество - встроенное средство языка, которое грех не использовать, второе и самое главное - придется импортировать и писать твой логгер везде, представь что сумм у нас в 15 модулях используется по коду. А декоратором 1 раз декорировали саму функцию и она везде работает одинаково.

    • @alw-3052
      @alw-3052 2 ปีที่แล้ว

      @@PythonRussian да, про дублирование я не додумался. Спасибо!

  • @ВладимирГригорьевич-у2р
    @ВладимирГригорьевич-у2р 3 ปีที่แล้ว +1

    да, на первых порах сложно =) но зато информативно

  • @Miron_Nicolaevich
    @Miron_Nicolaevich 10 หลายเดือนก่อน

    возможно глупый вопрос. но вот стало интересно. Попалась такая задача, где имеется функция, уже задекорированная декоратором №1 и она с параметром. Мне нужно было обернуть декоратор №1 своим декоратором № 2. Я конечно сделал по самому очевидному пути. Перед местом, где функция декорируется декоратором №1 обернул декоратор №1 декоратором №2. Но мне стало интересно, а возможно ли написать такой декоратор №2, который стеком декорирует функцию, которая уже задекорирована декоратором №2 так, что бы можно было перехватить параметры декоратора №1 декоратором №2, что бы например проверить параметр который был передан декоратору№1 и в случае его валидности, просто вернуть обратно декоратору№ 1 или как то в дальнейшем выполнить доп. логику, в случае если данные в параметре были не валидные. Проще говоря применить синтаксический сахар над функцией, на которой весит другой сахар с параметрами и вот эти параметры хочу провалидировать.

    • @Miron_Nicolaevich
      @Miron_Nicolaevich 10 หลายเดือนก่อน

      Жалко что в тг нет чата или хотя бы комментариев к постам)

    • @PythonRussian
      @PythonRussian  10 หลายเดือนก่อน

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

  • @kan4317
    @kan4317 3 ปีที่แล้ว +1

    wrapper должен получать как *args так и **kwargs, иначе аргументы переданные по ключу не передадутся в оборочиваемую функцию, а в классе он должен еще и принимать self

    • @PythonRussian
      @PythonRussian  3 ปีที่แล้ว +3

      допустим, а еще параметризованый декоратор можно писать. А тема конкретно этого ролика какая?

    • @kan4317
      @kan4317 3 ปีที่แล้ว +2

      @@PythonRussian, Ладно, но про kwards можнг было и тут упомянуть, боюсь многие посыпятся на этом

  • @Himera1983
    @Himera1983 หลายเดือนก่อน

    ты его написал а потом использовал. Но разве ты не видел на видео что никто не пишет декораторы а просто берут их откуда то и просто пишут сверху функции и никогда не обьясняют откуда их взяли и что они делают и где их посмотреть . Откуда !?

    • @PythonRussian
      @PythonRussian  หลายเดือนก่อน

      поменьше эмоций -побольше дела. Если бы ты внимательно посмотрел видео, то понял что декоратор это просто функция! А значит ее берут просто импортом, откуда -из библиотек и модулей. М ы тоже могли бы наш написанный декоратор в другом модуле импортировать и поставить сверху функции. Почитай что такое импорт

    • @Himera1983
      @Himera1983 หลายเดือนก่อน

      @@PythonRussian опять 25. Я знаю что эта функция от куда то ... Но никто ни говорит почему он ее ставит и что она делает. Не все же функции можно ка декоратор ставить добавив значек

    • @PythonRussian
      @PythonRussian  หลายเดือนก่อน

      @@Himera1983 не все, только такие, как показано в видео. Что она делает описано в документации по любой библиотеке. Ко мне какие претензии, задай вопрос тому, кто добавляет декораторы и не объясняет зачем

  • @randomcraft2345
    @randomcraft2345 ปีที่แล้ว +1

    Честно, не очень понимаю идею декораторов через сахар. Без сахара понятно, у тебя есть область видимости, там тебе нужна немного другая сумма, там ты её и задекорировал, при этом вне этой области сумма старая. А вот с сахаром... так теперь сумма везде изменена, почему тогда сразу саму сумму не поменять?

    • @PythonRussian
      @PythonRussian  ปีที่แล้ว +1

      для 1 функции и 1 правки возможно, а что если тебе нужно поменять 3 разные функции одинаково? ты полезешь в код всем 3 или сделаешь 1 декоратор?

    • @randomcraft2345
      @randomcraft2345 ปีที่แล้ว

      @@PythonRussian спасибо, теперь стало намного яснее!
      И ещё большее спасибо за оперативный комментарий!

  • @rpuropu
    @rpuropu 3 ปีที่แล้ว

    ВОпрос один мучает, подстать твоему каналу. МНого где слышу, что нагруженные части питоне, люди пишут на С++, и потом их интегрируют в код. Как это выглядит вообще? Это модуль скомпилированный? в питоне потом подключается через импорт или как? Что там за процедура вообще.. может где туториал есть поизучать? я между конспектами и кодингом отдыхаю изучая вот такие впоросы, что бы поинмать к чему меня может притянуть, и какие навыки пригодятся, а какие нет..

    • @PythonRussian
      @PythonRussian  3 ปีที่แล้ว

      понятия не имею, никогда не занимался, но в некоторых книгах есть раздел об этом, где показывают способ. По мне так это крайне редкая вещь в реальной работе.

    • @leonidpervak9624
      @leonidpervak9624 3 ปีที่แล้ว

      Могу быть не прав, но такое, насколько я понимаю, можно сделать с Cython - cython.readthedocs.io/en/latest/src/userguide/wrapping_CPlusPlus.html

  • @СергейКаштанов-у2э
    @СергейКаштанов-у2э 10 หลายเดือนก่อน +1

    Без 100 грамм не разберешься.

    • @RAYDER999
      @RAYDER999 5 หลายเดือนก่อน

      😂😂

  • @andrey6951
    @andrey6951 5 หลายเดือนก่อน

    Алексей Леонов!

  • @Himera1983
    @Himera1983 หลายเดือนก่อน

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

    • @PythonRussian
      @PythonRussian  หลายเดือนก่อน

      мы все в питоне или пишем сами или ИМПОРТИРУЕМ, все просто.

  • @dedovchemodanchik
    @dedovchemodanchik ปีที่แล้ว

    Очень мелко. Не видно

  • @kan4317
    @kan4317 3 ปีที่แล้ว +2

    Можешь громче делать ролики? Бесит дико

    • @PythonRussian
      @PythonRussian  3 ปีที่แล้ว +1

      наверное как то могу, посмотрим