我想显示我的函数的文档字符串,但如果我这样使用
@cost_time
def func():
"define ...."
blabla
print func.__doc__
它不会显示文档字符串,只是因为我使用了一些棘手的元编程,如何解决这个问题?
从装饰器返回的包装函数cost_time
必须具有 docstring 而不是func
. 因此,使用functools.wraps
which 正确设置__name__
and __doc__
:
from functools import wraps
def cost_time(fn):
@wraps(fn)
def wrapper():
return fn()
return wrapper