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()
输出: "<b><i>hello world</i></b>"
在大多数示例中,我大致了解装饰器以及它如何与其中之一一起工作。
在此示例中,有2个。从输出看,似乎@make_italic
先执行,然后执行@make_bold
。
这是否意味着对于装饰功能,它将首先运行该功能,然后移至其他装饰器的顶部?像@make_italic
先那么@make_bold
,而不是相反。
所以这意味着它与大多数编程语言中的自顶向下方法的规范不同吗?仅用于这种装饰器吗?还是我错了?