版权声明:©;2004 Microsoft Corporation. All rights reserved. https://blog.csdn.net/qq_42036824/article/details/86567732
问题2:如何保留被装饰函数的函数名和帮助信息文档
-
@functools.wraps(fun)
添加这个东西 -
print(con_add.doc)
打印帮助文档如果没有帮助文档,则返回None -
print(con_add.name)
打印函数名 -
错误做法:
def timeit(fun):
#@functools.wraps(fun) ##如果不添加返回的帮助文档和信息都是wrapper的函数名和信息文档
def wrapper(*args,**kwargs):
'''这是一个wrapper'''
start_time = time.time()
res = fun(*args,**kwargs)
end_time = time.time()
print('系统的运行时间为:%.6f' %(end_time - start_time))
return res
return wrapper
@timeit
def fun3(x):
'''这是一个func3'''
return x ** 2
print(fun3.__doc__)
print(fun3.__name__)
结果:
这是一个wrapper
wrapper
- 正确做法:
def timeit(fun):
@functools.wraps(fun) ##为了保留被修饰的函数名和帮助信息文档
def wrapper(*args,**kwargs):
'''这是一个wrapper'''
start_time = time.time()
res = fun(*args,**kwargs)
end_time = time.time()
print('系统的运行时间为:%.6f' %(end_time - start_time))
return res
return wrapper
@timeit
def fun3(x):
'''这是一个func3''' ##如果没有帮助文档(函数的注释),则返回None
return x ** 2
print(fun3.__doc__)
print(fun3.__name__)
结果:
这是一个func3
fun3