Уважаемый автор, у вас безусловный преподавательский талант. Это видно по многим видео. В каждом вы не спеша очень доступно разъясняете новичкам тему. И, что важно, морально поддерживаете их. Спасибо за ваш труд и желание поделиться знаниями! По теме декораторов. Понимание для меня приходило последовательно. Я познакомился с ними 3 месяца назад. Нельзя сказать, что объяснение (на другом канале) было плохое. Скорее, просто понадобилось определенное время, чтобы переварить это. Наконец-то пищеварение справилось) Спасибо автору канала.
полностью согласен. у меня имеется доступ к платным курсам от коробки, там эти информацию упаковали в 9 минут. и в основном автор просто диктует что пишет. а не пытается объяснять свои действия. и нет, они не так уж плохи, но автор Python Russia пишет видео от души так сказать)
Спасибо за урок! После просмотра, закрепил написанием собственного декоратора и опробовал на разных функциях. Осталось переварить, зачем он нужен(практическое применение), но это дело времени и много практики.
Большое спасибо! Достаточно сложно понять с первого раза что произошло)) понял, что декоратор это некий апгрейд существующих или даже импортированных функций под наши задачи.
вот это светлая мысль! не потому что канал, а то что будешь конспектировать и читать по ссылкам и в книжках - это просто круто помогает в развитии. У самого старые конспекты лежат по питону =) Отработали свое и принесли свою пользу.
Здравствуйте, почему мы не можем вызывать враппер с тремя аргументами и третьм передавать func(как объект), и всё будет одно и тоже? Или это так делать не надо?
Спасибо за урок. Вы хорошо объяснили что такое декоратор, но не объяснили зачем он нужен. из урока ясно, что функцию sum() можно использовать без всех этих танцев с бубном. Так что урок либо следует переработать, либо сделать предварительное введение в декораторы где рассказать, зачем они нужны.
@@PythonRussian согласен. Но в книге грокаем алгоритмы ретурн в блоке if и это условие не в блоке функции . И пишут запустите этот код. Так же есть тоже самое но уже в блоке функции.
Спасибо. Не сразу, но разобрался. Получается мы первой командой 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)) ##############################
Первое преимущество - встроенное средство языка, которое грех не использовать, второе и самое главное - придется импортировать и писать твой логгер везде, представь что сумм у нас в 15 модулях используется по коду. А декоратором 1 раз декорировали саму функцию и она везде работает одинаково.
возможно глупый вопрос. но вот стало интересно. Попалась такая задача, где имеется функция, уже задекорированная декоратором №1 и она с параметром. Мне нужно было обернуть декоратор №1 своим декоратором № 2. Я конечно сделал по самому очевидному пути. Перед местом, где функция декорируется декоратором №1 обернул декоратор №1 декоратором №2. Но мне стало интересно, а возможно ли написать такой декоратор №2, который стеком декорирует функцию, которая уже задекорирована декоратором №2 так, что бы можно было перехватить параметры декоратора №1 декоратором №2, что бы например проверить параметр который был передан декоратору№1 и в случае его валидности, просто вернуть обратно декоратору№ 1 или как то в дальнейшем выполнить доп. логику, в случае если данные в параметре были не валидные. Проще говоря применить синтаксический сахар над функцией, на которой весит другой сахар с параметрами и вот эти параметры хочу провалидировать.
wrapper должен получать как *args так и **kwargs, иначе аргументы переданные по ключу не передадутся в оборочиваемую функцию, а в классе он должен еще и принимать self
ты его написал а потом использовал. Но разве ты не видел на видео что никто не пишет декораторы а просто берут их откуда то и просто пишут сверху функции и никогда не обьясняют откуда их взяли и что они делают и где их посмотреть . Откуда !?
поменьше эмоций -побольше дела. Если бы ты внимательно посмотрел видео, то понял что декоратор это просто функция! А значит ее берут просто импортом, откуда -из библиотек и модулей. М ы тоже могли бы наш написанный декоратор в другом модуле импортировать и поставить сверху функции. Почитай что такое импорт
@@PythonRussian опять 25. Я знаю что эта функция от куда то ... Но никто ни говорит почему он ее ставит и что она делает. Не все же функции можно ка декоратор ставить добавив значек
@@Himera1983 не все, только такие, как показано в видео. Что она делает описано в документации по любой библиотеке. Ко мне какие претензии, задай вопрос тому, кто добавляет декораторы и не объясняет зачем
Честно, не очень понимаю идею декораторов через сахар. Без сахара понятно, у тебя есть область видимости, там тебе нужна немного другая сумма, там ты её и задекорировал, при этом вне этой области сумма старая. А вот с сахаром... так теперь сумма везде изменена, почему тогда сразу саму сумму не поменять?
ВОпрос один мучает, подстать твоему каналу. МНого где слышу, что нагруженные части питоне, люди пишут на С++, и потом их интегрируют в код. Как это выглядит вообще? Это модуль скомпилированный? в питоне потом подключается через импорт или как? Что там за процедура вообще.. может где туториал есть поизучать? я между конспектами и кодингом отдыхаю изучая вот такие впоросы, что бы поинмать к чему меня может притянуть, и какие навыки пригодятся, а какие нет..
понятия не имею, никогда не занимался, но в некоторых книгах есть раздел об этом, где показывают способ. По мне так это крайне редкая вещь в реальной работе.
все просто зациклились на роликах начала . Давайте уже примеры более сложные . много примеров использования циклов , вложеных и вашу м декораторов. не надо показывать что это такое и как их создавать. Покажите откуда вы берете их когда не создаете а просто пишете сверху функции не поясняя откуда и что зачем и почему
Уважаемый автор, у вас безусловный преподавательский талант. Это видно по многим видео. В каждом вы не спеша очень доступно разъясняете новичкам тему. И, что важно, морально поддерживаете их. Спасибо за ваш труд и желание поделиться знаниями!
По теме декораторов. Понимание для меня приходило последовательно. Я познакомился с ними 3 месяца назад. Нельзя сказать, что объяснение (на другом канале) было плохое. Скорее, просто понадобилось определенное время, чтобы переварить это. Наконец-то пищеварение справилось) Спасибо автору канала.
полностью согласен. у меня имеется доступ к платным курсам от коробки, там эти информацию упаковали в 9 минут. и в основном автор просто диктует что пишет. а не пытается объяснять свои действия. и нет, они не так уж плохи, но автор Python Russia пишет видео от души так сказать)
Большое спасибо
Это самое понятное объяснение которое я нашел
Теперь я прозрел!!!
встань и иди! кодить!
Спасибо огромное за уроки, безумно полезно и доступно!
благодарю за теплые слова. К сожалению, сейчас совсем нет времени на новые видео, но после нового года постараюсь еще пару полезностей заснять.
Вот просто большое спасибо, никакой воды, все понятным языком, как для кирпича все очень даже понял, автору большое спасибо
не жалко писать коменты автору, который делает очень годный контент!
С 100500 попытки стало понятно. Спасибо!
Спасибо за урок! После просмотра, закрепил написанием собственного декоратора и опробовал на разных функциях. Осталось переварить, зачем он нужен(практическое применение), но это дело времени и много практики.
Все доступно и без лишней воды....хотя, в фоне как будто вода льется перед микрофоном :))
ТЫ просто ТОП! Спасибо за то что так круто объясняешь!!!!!
Это не видео, а бомба!
не уверен, что ты искренен=) по-моему немного путано получилось и не понятно
@@PythonRussian нуу не знаю, я просто декораторы уже проходил, поэтому мне все понятно было. Это надо спросить у тех кто впервые о таком слышит
лучшее обьяснение, обожаю твой канал
Спасибо за объяснение!
Хороший разбор, спасибо!
Спасибо Вам за видео! Очень понятно и интересно!
Спасибо! Действительно очень круто объясняете, это талант!
Большое спасибо! Достаточно сложно понять с первого раза что произошло)) понял, что декоратор это некий апгрейд существующих или даже импортированных функций под наши задачи.
отлично объяснил ))) эффект прозрения получил , спасибо)).подпись: горемыка )))
Лучший👍
Спасибо. Подробно и понятно.
Ждем вторую часть!)
пока времени не хватает, но сделаю
Контент - пушка_ракета!
сегодня пойду под твой канал пару общих тетрадок куплю).. ьуду раскрывать темы до конца, со всеми ссылками)
вот это светлая мысль! не потому что канал, а то что будешь конспектировать и читать по ссылкам и в книжках - это просто круто помогает в развитии. У самого старые конспекты лежат по питону =) Отработали свое и принесли свою пользу.
Я это с самого начала делаю👍🏻
Круто! Кое что дошло, но практика все решает
да, без практики в нашем деле никуда
Спасибо!
Прекрасно!!!
большое спасибо за материал, но как же тихо, это жесть
Весь ютуб лучше смотреть с включенной тонокомпенсацией в Realtek
Крутая идея - создать декоратор, который заворачивает функцию в thread и запускает его.
идея хорошая, главное понимать, что там в функции будет происходить и не забывать про GIL
Просьба в следующих видео сделать шрифт по крупнее так как Вас смотрят люди и с плохим зрением!
да, я стараюсь, просто если сильно увеличивать то на экране мало входит и приходится скроллить туда сюда.
@Python_Russian, как вы прикрепляете функцию print в конце строки и она автоматически встает в начало?
пичарм так умеет, у меня есть видео по комбинациям клавиш и фишкам.
Здравствуйте, почему мы не можем вызывать враппер с тремя аргументами и третьм передавать func(как объект), и всё будет одно и тоже? Или это так делать не надо?
Спасибо ! А почему в выводе значение основной функции (5) идёт после "обертки " декоратора "до" и "после" ?
Спасибо за урок. Вы хорошо объяснили что такое декоратор, но не объяснили зачем он нужен. из урока ясно, что функцию sum() можно использовать без всех этих танцев с бубном. Так что урок либо следует переработать, либо сделать предварительное введение в декораторы где рассказать, зачем они нужны.
А почему оператор return невыходит использовать в If если она не внутри функции?
ретурн же это возврат, а если не из функции то откуда возврат?
@@PythonRussian согласен. Но в книге грокаем алгоритмы ретурн в блоке if и это условие не в блоке функции . И пишут запустите этот код. Так же есть тоже самое но уже в блоке функции.
@@PythonRussian книга грокаем алгоритмы в параграфе алгоритм дейкстры
@@PythonRussian большое спасибо что ответили .
@@PythonRussian согласен . Значит в книге ошибка и эта книга не та с которой можно чему то учиться ?
Спасибо. Не сразу, но разобрался.
Получается мы первой командой 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))
##############################
Первое преимущество - встроенное средство языка, которое грех не использовать, второе и самое главное - придется импортировать и писать твой логгер везде, представь что сумм у нас в 15 модулях используется по коду. А декоратором 1 раз декорировали саму функцию и она везде работает одинаково.
@@PythonRussian да, про дублирование я не додумался. Спасибо!
да, на первых порах сложно =) но зато информативно
возможно глупый вопрос. но вот стало интересно. Попалась такая задача, где имеется функция, уже задекорированная декоратором №1 и она с параметром. Мне нужно было обернуть декоратор №1 своим декоратором № 2. Я конечно сделал по самому очевидному пути. Перед местом, где функция декорируется декоратором №1 обернул декоратор №1 декоратором №2. Но мне стало интересно, а возможно ли написать такой декоратор №2, который стеком декорирует функцию, которая уже задекорирована декоратором №2 так, что бы можно было перехватить параметры декоратора №1 декоратором №2, что бы например проверить параметр который был передан декоратору№1 и в случае его валидности, просто вернуть обратно декоратору№ 1 или как то в дальнейшем выполнить доп. логику, в случае если данные в параметре были не валидные. Проще говоря применить синтаксический сахар над функцией, на которой весит другой сахар с параметрами и вот эти параметры хочу провалидировать.
Жалко что в тг нет чата или хотя бы комментариев к постам)
потому что ютуб комменты не предназначены для цитирования кода и больших обсуждений. Для этого есть форумы, один из них указан в ссылках канала
wrapper должен получать как *args так и **kwargs, иначе аргументы переданные по ключу не передадутся в оборочиваемую функцию, а в классе он должен еще и принимать self
допустим, а еще параметризованый декоратор можно писать. А тема конкретно этого ролика какая?
@@PythonRussian, Ладно, но про kwards можнг было и тут упомянуть, боюсь многие посыпятся на этом
ты его написал а потом использовал. Но разве ты не видел на видео что никто не пишет декораторы а просто берут их откуда то и просто пишут сверху функции и никогда не обьясняют откуда их взяли и что они делают и где их посмотреть . Откуда !?
поменьше эмоций -побольше дела. Если бы ты внимательно посмотрел видео, то понял что декоратор это просто функция! А значит ее берут просто импортом, откуда -из библиотек и модулей. М ы тоже могли бы наш написанный декоратор в другом модуле импортировать и поставить сверху функции. Почитай что такое импорт
@@PythonRussian опять 25. Я знаю что эта функция от куда то ... Но никто ни говорит почему он ее ставит и что она делает. Не все же функции можно ка декоратор ставить добавив значек
@@Himera1983 не все, только такие, как показано в видео. Что она делает описано в документации по любой библиотеке. Ко мне какие претензии, задай вопрос тому, кто добавляет декораторы и не объясняет зачем
Честно, не очень понимаю идею декораторов через сахар. Без сахара понятно, у тебя есть область видимости, там тебе нужна немного другая сумма, там ты её и задекорировал, при этом вне этой области сумма старая. А вот с сахаром... так теперь сумма везде изменена, почему тогда сразу саму сумму не поменять?
для 1 функции и 1 правки возможно, а что если тебе нужно поменять 3 разные функции одинаково? ты полезешь в код всем 3 или сделаешь 1 декоратор?
@@PythonRussian спасибо, теперь стало намного яснее!
И ещё большее спасибо за оперативный комментарий!
ВОпрос один мучает, подстать твоему каналу. МНого где слышу, что нагруженные части питоне, люди пишут на С++, и потом их интегрируют в код. Как это выглядит вообще? Это модуль скомпилированный? в питоне потом подключается через импорт или как? Что там за процедура вообще.. может где туториал есть поизучать? я между конспектами и кодингом отдыхаю изучая вот такие впоросы, что бы поинмать к чему меня может притянуть, и какие навыки пригодятся, а какие нет..
понятия не имею, никогда не занимался, но в некоторых книгах есть раздел об этом, где показывают способ. По мне так это крайне редкая вещь в реальной работе.
Могу быть не прав, но такое, насколько я понимаю, можно сделать с Cython - cython.readthedocs.io/en/latest/src/userguide/wrapping_CPlusPlus.html
Без 100 грамм не разберешься.
😂😂
Алексей Леонов!
все просто зациклились на роликах начала . Давайте уже примеры более сложные . много примеров использования циклов , вложеных и вашу м декораторов.
не надо показывать что это такое и как их создавать. Покажите откуда вы берете их когда не создаете а просто пишете сверху функции не поясняя откуда и что зачем и почему
мы все в питоне или пишем сами или ИМПОРТИРУЕМ, все просто.
Очень мелко. Не видно
Можешь громче делать ролики? Бесит дико
наверное как то могу, посмотрим