Декоратор принимает функцию или класс и возвращает обёртку либо замену, добавляя поведение без изменения места вызова. Частые применения — логирование, кеш и проверки доступа.
Приходилось ли вам работать с декораторами в Python? Что это такое и где они применяются?
Декоратор принимает функцию или класс и возвращает обёртку либо замену, добавляя поведение без изменения места вызова. Частые применения — логирование, кеш и проверки доступа.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Декоратор принимает функцию или класс и возвращает обёртку либо замену, добавляя поведение без изменения места вызова. Частые применения — логирование, кеш и проверки доступа.
Для функции @decorator над def примерно соответствует func = decorator(func). В обёртке используйте functools.wraps, чтобы сохранить имя и метаданные исходной функции; аргументы обычно передают через *args и **kwargs.
Пример из опыта должен описывать реальную задачу, а не только синтаксис. Для async-функции нужна async-обёртка с await. Важно не скрывать исключения, не логировать секреты и учитывать порядок: несколько декораторов применяются снизу вверх.