import time #加载time模块
from functools import wraps #加载functools模块中的wraps函数
def cost_time(old_fn): # 注:cost_time是装饰器名 ,形参old_fn是要装饰的函数 装饰器最外层没有return,也就是不用返回的
@wraps(old_fn) #它主要作用就是接收到原函数中的注析,所以括号内也是上面形参一样的
def inner(*args, **kwargs): # inner它是cost_time这个装饰器的功能区,也就是要添加的功能在此写,它的形参为 *args, **kwargs 这两个,其实就是为了接收原函数中的参数
start_time = time.time() #innser的代码,记录执行原函数时的时间
res = old_fn(*args, **kwargs) # 这个是原函数,结果由变量 res保存,函数名与cost_time形参相同,它的形参与inner的形参相同
end_time = time.time() #这个也是inner的代码 ,它记录原函数执行结束时的时间
print("花费时间为:", end_time - start_time) #运算并输出原函数执行所花费的时间
return res # 返回原函数的结果
return inner #返回inner ,这个返回值是固定的,也就是上面inner的函数名,
@cost_time #注:@后面跟的名字就是装饰器的名字 ,
def kk(): #这个函数就是原函数,是要通过装饰器装饰的函数
#这行是函数注明
print(‘这就是原函数‘)
kk() #调用原函数,这样就自动进行装饰了.返回的结果就是这个函数执行所要花费的时间
原文地址:https://www.cnblogs.com/jshy/p/9465540.html