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()
Produzione: "<b><i>hello world</i></b>"
Capisco approssimativamente i decoratori e come funziona con uno di essi nella maggior parte degli esempi.
In questo esempio, ce ne sono 2. Dall'output, sembra che venga @make_italic
eseguito prima, quindi @make_bold
.
Questo significa che per le funzioni decorate, eseguirà prima la funzione per poi spostarsi verso l'alto per gli altri decoratori? Come @make_italic
prima allora @make_bold
, invece del contrario.
Quindi questo significa che è diverso dalla norma dell'approccio top-down nella maggior parte dei linguaggi di programmazione? Solo per questo caso di decoratore? O mi sbaglio?