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()
Resultado: "<b><i>hello world</i></b>"
Eu entendo aproximadamente sobre decoradores e como funciona com um deles na maioria dos exemplos.
Neste exemplo, existem 2 deles. Pela saída, parece que é @make_italic
executado primeiro, então @make_bold
.
Isso significa que, para funções decoradas, ele primeiro executará a função primeiro e depois avançará para o topo para outros decoradores? Como @make_italic
primeiro então @make_bold
, em vez do contrário.
Então, isso significa que é diferente da norma de abordagem de cima para baixo na maioria das linguagens de programação? Só para esse caso de decorador? Ou eu estou errado?