import time #导入了Python标准库中的time模块,用于处理时间相关的功能。
def cal_time(fn): #定义了一个装饰器函数,并接受一个函数fn作为参数
def inner(): #在cal_time函数内部定义了一个内部函数inner,用于包裹传入的函数fn。
t1=time.perf_counter() #记录函数开始执行时的时间。
fn() #执行传入的函数fn,即sum()或sum1()
t2=time.perf_counter() #记录函数执行结束时的时间。
print(t2-t1)
return inner #返回内部函数inner,用于装饰被修饰的函数。
@cal_time #使用cal_time装饰器修饰下面的sum()函数
def sum():
s=0
for i in range(100000):
s=s+i
@cal_time #使用cal_time装饰器修饰sum1()函数,同样用于计算执行时间。
def sum1():
s=0
for i in range(100000):
s=s+i
print(s)
sum()
sum1() #调用sum和sum1函数
注意:
1.装饰器传入的参数是函数
2.`@cal_time`是装饰器语法,用于简化在函数定义前应用装饰器的过程。当你在一个函数定义前加上`@cal_time`,相当于将该函数作为参数传递给`cal_time`函数,并将其返回的函数替换原来的函数定义。这使得在函数定义后直接调用函数时,实际上是调用了被装饰后的函数。
3.注意@cal_time应写在被装饰函数的前面,即定义函数时前要加上@cal_time
4.注意函数无论是定义还是调用都需要在后面加上一个(),如time.perf_counter()
5.一般不用考虑python中的数据溢出问题