版权声明:©;2004 Microsoft Corporation. All rights reserved. https://blog.csdn.net/qq_42036824/article/details/86567694
问题1:被修饰的函数有返回值怎么办
- 错误做法:
def timeit(fun):
@functools.wraps(fun)
def wrapper(*args,**kwargs):
start_time = time.time()
fun(*args,**kwargs)
end_time = time.time()
print('系统的运行时间为:%.6f' %(end_time - start_time))
return wrapper
@timeit
def fun3(x):
return x ** 2 ##被装饰的函数有返回值,则需要在装饰器中将函数的返回值传给一个参数,并返回这个参数,否则返回值为None
a = fun3(3)
print(a)
结果:
系统的运行时间为:0.000003
None
- 正确做法:
def timeit(fun):
@functools.wraps(fun)
def wrapper(*args,**kwargs):
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):
return x ** 2
a = fun3(3)
print(a)