Так как мы вызываем декоратор, то в само декорирование возвращается другая функция, а оттуда мы уже используем аргументы. Если непонятно, то можете написать мне в телеграм: @iv_andrew
Ищу инфу по этой теме уже часа 3. Я понял что это работает, и сам синтаксис. Но я так и не понял как декорируемая функция передаётся декоратору внутри, ведь собака стоит перед другой функцией. Как так получается???
декоратор - функция(которая в качестве аргумента, принимает другую функцию) @decorator def func(): ... аналог такой записи: func = decorator(func) проще говоря, это обычный синтаксический сахар)
Самый простой пример: Во встроенной библиотеке functools есть декоратор lru_cache, у которого есть необязательный аргумент cache_size (за точность имён не ручаюсь, но суть передана). Если с точки зрения "зачем мне самому писать такие декораторы", то тут сложнее, ибо мне в голову приходят только довольно сложные примеры, в основном связанные с написанием собственных библиотек/фреймворков, но вероятно если вы пишите свой декораторы, то рано или поздно вы столкнётесь с необходимостью передать в него дополнительные аргументы
Отдельное спасибо за крупный шрифт в pycharm
Коммент в поддержку. Больше таких роликов, оч круто
Очень интересно, но нихуа а не поняллл.. Пойду гуглить
Отлично!
Да это жестко.
нормально
Не могу понять как decorator_(func) получает в себя функцию если вызывается @decorator который должен как аргумент принимать функцию a()
Так как мы вызываем декоратор, то в само декорирование возвращается другая функция, а оттуда мы уже используем аргументы. Если непонятно, то можете написать мне в телеграм: @iv_andrew
а просто буль вторым аргументом в функцию декоратора, не рисуя лишний деф, нельзя передать?
Ищу инфу по этой теме уже часа 3. Я понял что это работает, и сам синтаксис. Но я так и не понял как декорируемая функция передаётся декоратору внутри, ведь собака стоит перед другой функцией. Как так получается???
декоратор - функция(которая в качестве аргумента, принимает другую функцию)
@decorator
def func():
...
аналог такой записи:
func = decorator(func)
проще говоря, это обычный синтаксический сахар)
как это применять на практике?
В библиотеках для телеграмм ботов как минимум используется, по такому же принципу можешь
Самый простой пример:
Во встроенной библиотеке functools есть декоратор lru_cache, у которого есть необязательный аргумент cache_size (за точность имён не ручаюсь, но суть передана).
Если с точки зрения "зачем мне самому писать такие декораторы", то тут сложнее, ибо мне в голову приходят только довольно сложные примеры, в основном связанные с написанием собственных библиотек/фреймворков, но вероятно если вы пишите свой декораторы, то рано или поздно вы столкнётесь с необходимостью передать в него дополнительные аргументы
После половины ролика автор свалился в непонятное