Sari la conținutul principal
🔒 Mod previzualizare. Primele cincisprezece lecții Foundations sunt gratuite; aceasta este Pro. Pornește un trial de 7 zile pentru a debloca editorul, sugestiile AI și restul programului. Card necesar, anulează oricând în Dashboard.Pornește trial de 7 zile →
← CursuriSenior Deep-DivesModule 11 · Decorator patterns at scaleDecorator stacking — TOP wraps last, runs firstpredict151 / 161
+150 XP
Sarcină
📝 **Sarcina:** Preziceți ieșirea cu 8 linii. Trei decoratori `@trace(...)` se stivuiesc pe `work()`. Fiecare wrapper tipărește `>{name}` la intrare și `<{name}` la ieșire. Urmăriți ordinea apelurilor: cea mai exterioară intră prima, cea mai interioară rulează funcția reală, cea mai interioară ieșirile mai întâi, cele mai externe ieșirile ultimele. 📋 Implementați funcția de mai sus. Testele rulează automat. 💡 **Sugestie:** Recitiți teoria dacă rămâneți blocat.
Prezice ieșirea

Citește codul cu atenție

from functools import wraps


def trace(name: str):
    def decorator(fn):
        @wraps(fn)
        def wrapper(*args, **kwargs):
            print(f">{name}")
            result = fn(*args, **kwargs)
            print(f"<{name}")
            return result
        return wrapper
    return decorator


@trace("outer")
@trace("middle")
@trace("inner")
def work() -> str:
    print("work")
    return "ok"


result = work()
print(f"result: {result}")

Ce va afișa programul? Scrie aici:

💬 Discuție

Fii primul — pune o întrebare sau împărtășește un sfat.
Conectează-te pentru a te alătura discuției. Citirea este gratuită.
Se încarcă discuția…