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()
Salida: "<b><i>hello world</i></b>"
Entiendo aproximadamente sobre decoradores y cómo funciona con uno de ellos en la mayoría de los ejemplos.
En este ejemplo, hay 2. De la salida, parece que se @make_italic
ejecuta primero, luego @make_bold
.
¿Significa esto que para las funciones decoradas, primero ejecutará la función y luego se moverá hacia la parte superior para otros decoradores? Como @make_italic
primero entonces @make_bold
, en lugar de lo contrario.
Entonces, ¿esto significa que es diferente de la norma del enfoque de arriba hacia abajo en la mayoría de los lenguajes de programación? ¿Solo para este caso de decorador? ¿O me equivoco?