Ordem de execução do decorador
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 compreendo sobre decoradores e como ele funciona com um deles na maioria dos exemplos.
Neste exemplo, existem 2. A partir da saída, parece que@make_italic
executa primeiro, depois@make_bold
.
Isso significa que, para as funções decoradas, ele executará a função primeiro e depois avançará para o topo de outros decoradores? Gostar@make_italic
primeiro, então@make_bold
, em vez do oposto.
Então isso significa que ele é diferente da norma da abordagem de cima para baixo na maioria dos idiomas de programação? Apenas para este caso de decorador? Ou eu estou errado?