def make_bold(fn):
return lambda : "<b>" + fn() + "</b>"
def make_italic(fn):
return lambda : "<i>" + fn() + "</i>"
@make_bold
@make_italic
def hello():
return "hello world"
helloHTML = hello()
Ausgabe: "<b><i>hello world</i></b>"
Ich verstehe grob über Dekorateure und wie es mit einem davon in den meisten Beispielen funktioniert.
In diesem Beispiel gibt es zwei davon. Aus der Ausgabe geht hervor, dass diese @make_italic
zuerst ausgeführt wird @make_bold
.
Bedeutet dies, dass bei dekorierten Funktionen zuerst die Funktion ausgeführt wird und dann bei anderen Dekorateuren nach oben verschoben wird? Wie @make_italic
zuerst dann @make_bold
, anstatt das Gegenteil.
Das bedeutet also, dass es sich in den meisten Programmiersprachen von der Norm des Top-Down-Ansatzes unterscheidet? Nur für diesen Fall von Dekorateur? Oder liege ich falsch?
a(b(x))
es von oben nach unten ist (wenn Sie sich vorstellen, dass es sich um 3 Zeilen handelt)