@符号函数代入问题
def log(prefix):
def log_decorator(f):
def wrapper(*args, **kw):
print '[%s] %s()...' % (prefix, f.__name__)
return f(*args, **kw)
return wrapper
return log_decorator
@log('DEBUG')
def test():
pass
print test()
如上所示,在学习python进阶2-13时看到的代码,但是不太理解这4个函数之间的嵌套关系。
按照我的理解,我觉得@之前的是定义了这样一个函数:log(log_decorate(wrapper(*args,**kw),f),prefix)
但是
@log('DEBUG')
def test():
pass
这个语句就不太理解了,在我看来,它是定义prefix='DEBUG',然后把test作为f,代入了上面的函数?是这样吗?
@这里学的有点绕。。。请前辈多多指点。