Przejdź do treści głównej
🔒 Tryb podglądu. Pierwszych piętnaście lekcji Foundations jest darmowych; ta jest Pro. Rozpocznij 7-dniowy trial, aby odblokować edytor, podpowiedzi AI i resztę kursu. Wymagana karta, anulujesz w dowolnym momencie w Dashboard.Rozpocznij 7-dniowy trial →
← KursySenior Deep-DivesModule 11 · Decorator patterns at scaleParametrised decorators — three nested functions, not twopredict150 / 161
+150 XP
Zadanie
📝 **Zadanie:** Przewiduj wynik 5-liniowy. Sparametryzowany dekorator `@repeat(times=3)` otacza `greet`. Opakowanie uruchamia treść 3 razy na wywołanie. Końcowe sprawdzenie `__name__` sprawdza, czy `@wraps(fn)` zachowało metadane opakowanej funkcji. 📋 Zaimplementuj powyższą funkcję. Testy uruchamiają się automatycznie. 💡 **Wskazówka:** Jeśli utkniesz, przeczytaj ponownie teorię.
Przewiduj wynik

Przeczytaj kod uważnie

from functools import wraps


def repeat(times: int):
    def decorator(fn):
        @wraps(fn)
        def wrapper(*args, **kwargs):
            result = None
            for _ in range(times):
                result = fn(*args, **kwargs)
            return result
        return wrapper
    return decorator


@repeat(times=3)
def greet(name: str) -> str:
    print(f"hi {name}")
    return name


result = greet("Ada")
print(f"returned: {result}")
print(greet.__name__)

Co wypisze program? Napisz tutaj:

💬 Dyskusja

Zadaj pierwsze pytanie lub podziel się wskazówką.
Zaloguj się aby dołączyć do dyskusji. Czytanie jest darmowe.
Ładowanie dyskusji…