python——装饰器问题1:被修饰的函数有返回值怎么办

版权声明:©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)

猜你喜欢

转载自blog.csdn.net/qq_42036824/article/details/86567694