Zum Hauptinhalt springen
🔒 Vorschaumodus. Die ersten fünfzehn Foundations-Lektionen sind kostenlos; diese hier ist Pro. Starte einen 7-Tage-Trial, um den Editor, AI-Hinweise und den Rest des Lehrplans freizuschalten. Karte erforderlich, jederzeit im Dashboard kündbar.7-Tage-Trial starten →
← KurseSenior Deep-DivesModule 11 · Decorator patterns at scaleDecorator stacking — TOP wraps last, runs firstpredict151 / 161
+150 XP
Aufgabe
📝 **Aufgabe:** Vorhersage der 8-Zeilen-Ausgabe. Drei „@trace(...)“-Dekoratoren stapeln sich auf „work()“. Jeder Wrapper gibt „>{name}“ beim Eintritt und „<{name}“ beim Verlassen aus. Verfolgen Sie die Aufrufreihenfolge: Die äußerste Seite tritt zuerst ein, die innere Seite führt die eigentliche Funktion aus, die innerste Seite verlässt sie zuerst und die äußerste Seite verlässt sie zuletzt. 📋 Implementieren Sie die obige Funktion. Tests laufen automatisch ab. 💡 **Hinweis:** Lesen Sie die Theorie noch einmal, wenn Sie nicht weiterkommen.
Sage die Ausgabe vorher

Lies den Code sorgfältig

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}")

Was wird das Programm ausgeben? Schreib hier:

💬 Diskussion

Sei der erste — stelle eine Frage oder teile einen Tipp.
Anmelden um an der Diskussion teilzunehmen. Lesen ist kostenlos.
Diskussion wird geladen…