Встречается на собеседованиях • сегодня
Почему нельзя сделать декоратор с помощью одной функции в Python
Декоратор в Python должен принимать функцию и возвращать обёртку (новую функцию). Если сделать его как обычную функцию без вложенности, он не сможет сохранить состояние или параметры декорируемой функции.
Пример неправильного подхода:
python
def decorator(func):
print("Decorated!") # Выполнится сразу при декорировании
return func # Просто вернёт исходную функциюПравильный вариант использует вложенную функцию-обёртку:
python
def decorator(func):
def wrapper(*args, **kwargs):
print("Before call")
result = func(*args, **kwargs)
print("After call")
return result
return wrapperБез wrapper декоратор не сможет:
- Перехватывать аргументы вызова
- Выполнять код до/после вызова функции
- Модифицировать результат или аргументы
Исключение — если декоратор просто заменяет функцию другой (редкий случай).

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы