Выбор ответа Junior Декораторы спрашивают часто обновлено
Во что разворачивается @decorator
Вопрос
Чему эквивалентна запись @log над def f(): ...?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: f = log(f) сразу после определения функции. Декоратор это синтаксический сахар: после выполнения def имя f перепривязывается к результату log(f).
Варианты ответа
log(f)вызывается при каждом вызовеffнаследуется отlogf = log(f)сразу после определения функцииправильный ответlogвызывается один раз при первом вызовеf
Разбор
Декоратор это синтаксический сахар: после выполнения def имя f перепривязывается к результату log(f). Сам log выполняется один раз при определении функции, а при каждом вызове работает уже обёртка, которую он вернул. Наследования функций в Python нет, а «ленивого» применения при первом вызове тоже нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.