Hülle um eine Funktion
Du willst eine Zeile vor einer Begrüßung schreiben. Du rufst greet mit kai auf. Die erste Zeile auf dem Bildschirm ist door. Die zweite Zeile ist hi kai.
def announce(fn):
def wrapped(name):
print("door")
return fn(name)
return wrapped
@announce
def greet(name):
return "hi " + name
print(greet("kai"))
Der Bildschirm zeigt zwei Zeilen. Du hast print(greet("kai")) geschrieben. Dieser Lauf beginnt nicht bei der return-Zeile in greet. @announce legt wrapped um greet, also läuft zuerst wrapped, wenn du greet("kai") aufrufst. Das print in wrapped schreibt door, und das ist die erste Zeile. Danach führt wrapped die Begrüßung aus, und die Begrüßung gibt hi kai zurück. Das print um greet("kai") schreibt hi kai, und das ist die zweite Zeile. Das Programm ist fertig. Es gibt keine dritte Zeile. None ist keine dritte Zeile.
door ist nicht die Begrüßung. Die Begrüßung ist hi kai. Stünde die Zeile @announce nicht über greet, würde print(greet("kai")) nur eine Zeile schreiben, nämlich hi kai. Dieses Programm ist nicht jenes. Dieses Programm hat @announce, also ist die erste Zeile door und die zweite Zeile hi kai.
Du kannst jetzt eine Hülle um eine Funktion legen, damit eine Zeile vor der eigenen Zeile der Funktion läuft. Der Bildschirm zeigt door, dann hi kai. Die nächste Seite schreibt einen Typ neben einen Namen.
Eine Zeile vor der Begrüßung
Die Zeile @announce über greet sorgt dafür, dass das print in wrapped zuerst door schreibt. Danach schreibt print(greet("kai")) die Zeile hi kai. Der Bildschirm zeigt zwei Zeilen: door, dann hi kai. Die nächste Seite schreibt einen Typ neben einen Namen.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt