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()
Wynik: "<b><i>hello world</i></b>"
Z grubsza rozumiem o dekoratorach i jak to działa z jednym z nich w większości przykładów.
W tym przykładzie jest ich 2. Z danych wyjściowych wynika, że @make_italic
najpierw jest wykonywany @make_bold
.
Czy to oznacza, że w przypadku funkcji dekoracyjnych najpierw uruchomi funkcję, a następnie przesunie się do góry dla innych dekoratorów? Tak jak @make_italic
wtedy @make_bold
, zamiast odwrotnie.
Czy to oznacza, że różni się od standardowego podejścia odgórnego w większości języków programowania? Tylko w tym przypadku dekoratora? A może się mylę?