Пропуски Middle Декораторы обновлено
Декоратор с параметром: заполните пропуски
Вопрос
Допишите параметризованный декоратор repeat(n), который вызывает функцию n раз и возвращает список результатов.
import functools
def repeat(n):
def decorator(func):
@functools.__(1)__(func)
def wrapper(*args, **kwargs):
return [func(__(2)__) for _ in range(n)]
return __(3)__
return __(4)__
Попробуйте сами
Заполните пропуски по номерам.
1
2
3
4
Показать ответ и разбор
Коротко
Три уровня: repeat(n) возвращает decorator, decorator(func) возвращает wrapper. Обёртка пробрасывает аргументы через args, kwargs, а functools.wraps(func) сохраняет метаданные.
Что в пропусках
1
wraps
2
*args, **kwargs или *args,**kwargs
3
wrapper
4
decorator
Разбор
Три уровня: repeat(n) возвращает decorator, decorator(func) возвращает wrapper. Обёртка пробрасывает аргументы через *args, **kwargs, а functools.wraps(func) сохраняет метаданные.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Декоратор проверки типов аргументов
Следующий вопрос
functools.cache против lru_cache