Mediumdecorator
Что такое декоратор в Python?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Декоратор — функция (или класс), принимающая функцию и возвращающая новую (обычно обёртку). Синтаксис @: @my_decorator def f(): pass эквивалентно f = my_decorator(f).
from functools import wraps
def log(func):
@wraps(func) # копирует __name__, __doc__
def wrapper(*args, **kwargs):
print(f"call {func.__name__}")
result = func(*args, **kwargs)
print(f"done")
return result
return wrapper
@log
def add(a, b):
return a + b# Декоратор с аргументами — triple-nested
def repeat(times):
def decorator(func):
def wrapper(*a, **kw):
for _ in range(times):
func(*a, **kw)
return wrapper
return decorator
@repeat(3)
def hi(): print("hi")Стек: @a @b @c → a(b(c(f))). Встроенные: @property, @staticmethod, @classmethod, @functools.lru_cache, @dataclass, @contextmanager.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.