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()
Production: "<b><i>hello world</i></b>"
Je comprends à peu près les décorateurs et comment cela fonctionne avec l'un d'entre eux dans la plupart des exemples.
Dans cet exemple, il y en a 2. De la sortie, il semble que @make_italic
s'exécute d'abord, puis @make_bold
.
Cela signifie-t-il que pour les fonctions décorées, il exécutera d'abord la fonction puis se déplacera vers le haut pour les autres décorateurs? Comme d' @make_italic
abord alors @make_bold
, au lieu du contraire.
Cela signifie donc qu'il est différent de la norme de l'approche descendante dans la plupart des langages de programmation? Rien que pour cette affaire de décorateur? Ou ai-je tort?