【发布时间】:2014-03-24 16:12:54
【问题描述】:
我对以下代码段的调用顺序感到困惑。
#/usr/bin/python
def decorator_no_args(fn):
if not callable(fn):
raise TypeError
def wrapper():
return fn()
print "decorator_no_args"
return wrapper
@decorator_no_args
def foo_no_args():
print "foo_no_args"
def decorator_args(* args, **kargs):
def wrapper0(fn):
def wrapper1(*args, **kargs):
return fn(*args, **kargs)
return wrapper1
print "decorator_args"
return wrapper0
@decorator_args(1)
def foo_args(arg0):
print "foo_args"
if __name__ == "__main__":
foo_no_args()
输出是:
decorator_no_args
decorator_args
foo_no_args
如上所示,函数decorator_args() 未被调用。但是为什么要记录呢?
【问题讨论】:
标签: python decorator python-decorators