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()
Run Code Online (Sandbox Code Playgroud)
输出: "<b><i>hello world</i></b>"
我大致了解装饰器以及它在大多数示例中如何与其中一个一起工作.
在这个例子中,有2个.从输出,它似乎@make_italic首先执行,然后@make_bold.
这是否意味着对于装饰函数,它将首先运行函数然后移动到其他装饰器的顶部?就像@make_italic第一个@make_bold,而不是相反.
那么这意味着它与大多数编程中的自上而下方法的规范不同?只为这个装饰器的情况?还是我错了?