Да. Запись @decorator над определением функции эквивалентна присваиванию func = decorator(func). Декоратор — обычный вызываемый объект, который возвращает замену исходной функции.
Можно ли использовать декоратор без синтаксиса @?
Да. Запись @decorator над определением функции эквивалентна присваиванию func = decorator(func). Декоратор — обычный вызываемый объект, который возвращает замену исходной функции.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Да. Запись @decorator над определением функции эквивалентна присваиванию func = decorator(func). Декоратор — обычный вызываемый объект, который возвращает замену исходной функции.
Для декоратора с параметрами используется func = factory(option)(func). Несколько декораторов применяются снизу вверх: @outer над @inner означает func = outer(inner(func)). Если нужно сохранить исходную функцию, держите отдельную ссылку. functools.wraps помогает перенести метаданные wrapper, но не является обязательным условием декорирования.