定义没有@的修饰函数

时间:2018-12-14 12:33:30

标签: python

因此,假设我有一个装饰器foo(),并将其像这样应用于bar():

@foo
def bar():
    pass

我知道有一种方法可以修饰已经定义的函数,如下所示:

foo(bar())

但是如何在不使用语法糖的情况下修饰函数?

1 个答案:

答案 0 :(得分:11)

通常是装饰

@foo
def bar():
    pass

是以下各项的简写:

def bar():
    pass

bar = foo(bar)  # note the missing (); do not call bar

装饰器将函数本身作为参数,而不是函数调用的结果。