python wraps
用代码说明问题:
def d(f): def _d(*args, **kwargs): print f.__name__, ' is called' f(*args, **kwargs) return _d @d def test(): """function test""" print 'test' if __name__=='__main__': print test.__name__, " | ", test.__doc__
输出:
_d | None
可能你想要输出的是这样的:
test | function test
原因自然是函数已经发生了变化。
如果想要输出"test | function test",可以用wraps,d修改如下:
from functools import wraps def d(f): @wraps(f) def _d(*args, **kwargs): print f.__name__, ' is called' f(*args, **kwargs) return _d
即,在_d上面用wraps(f)修饰一下。