Пропуски 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 ошибок.