python装饰器
装饰器的本质就是一个函数能为其它函数增加额外功能
装饰器不加参数
python
#coding:utf-8
from time import time
#装饰器函数
def elapsed(target):
"统计目标函数执行的耗时"
def decorated(*args,**kwargs):
start = time()
r = target(*args,**kwargs)
end = time()
print("函数执行的耗时:",end - start)
return r
return decorated
#对目标函数进行elapsed装饰器函数的调用
#返回一个装饰后的名字还是叫power_sum的函数
@elapsed
def power_sum(n):
total = 0
for i in range(1,n+1):
total += i ** 2
return total
if __name__ == '__main__':
#调用装饰器函数,装饰目标函数,得到一个装饰后的函数
# power_sum = elapsed(power_sum)
# print(power_sum(100000))
#加上python的装饰器后
print(power_sum(100000))
装饰器加上参数
python
#coding:utf-8
from time import time
#装饰器函数
def elapsed_precision(n):
def elapsed(target):
"统计目标函数执行的耗时"
def decorated(*args,**kwargs):
start = time()
r = target(*args,**kwargs)
end = time()
print("函数执行的耗时:",round(end - start,n))
return r
return decorated
return elapsed
#对目标函数进行elapsed装饰器函数的调用
#返回一个装饰后的名字还是叫power_sum的函数
@elapsed_precision(2)
def power_sum(n):
total = 0
for i in range(1,n+1):
total += i ** 2
return total
if __name__ == '__main__':
#调用装饰器函数,装饰目标函数,得到一个装饰后的函数
# power_sum = elapsed(power_sum)
# print(power_sum(100000))
#加上python的装饰器后
print(power_sum(100000))