装饰器实现计算函数的运行时间
何为装饰器
- 装饰器其实就是一个函数,该函数有一个参数(函数类型),返回一个闭包
- 在返回的闭包中调用传递进来的函数,然后在调用函数的前后就可以添加内容
作用:
- 当需要改变一个函数原有的功能时,但是不想/不能改变原来的函数,可以通过装饰器解决
计算函数执行时间的装饰器
import functools
import time
def run_time(fn):
@functools.wraps(fn)
def wrapper(*args, **kw):
start = time.time()
res = fn(*args, **kw)
print('%s 运行了 %f 秒' % (fn.__name__, time.time() - start))
return res
return wrapper
#测试
@run_time
def test(n):
time.sleep(n)
print("运行结束了")
test(3)
测试结果
运行结束了
test 运行了 3.000641 秒