def log(func):
def wraper(*a, **kw):
return func(*a, **kw)
return wraper
@log
def f():
print 'f'
print locals()['f'] # - prints <function wraper at 0x00CBF3F0>.
如何获得真正的 f 对象(不是装饰器包装)?
请您参考如下方法:
functools模块还提供了一个 wraps 装饰器,它确保包装函数看起来更像真正的函数:例如正确的名称、模块和文档字符串。
