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 rreturn decorated#对目标函数进行elapsed装饰器函数的调用
#返回一个装饰后的名字还是叫power_sum的函数
@elapsed
def power_sum(n):total = 0for i in range(1,n+1):total += i ** 2return total
if __name__ == '__main__':#调用装饰器函数,装饰目标函数,得到一个装饰后的函数# power_sum = elapsed(power_sum)# print(power_sum(100000))#加上python的装饰器后print(power_sum(100000))
装饰器加上参数
#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 rreturn decoratedreturn elapsed#对目标函数进行elapsed装饰器函数的调用
#返回一个装饰后的名字还是叫power_sum的函数
@elapsed_precision(2)
def power_sum(n):total = 0for i in range(1,n+1):total += i ** 2return total
if __name__ == '__main__':#调用装饰器函数,装饰目标函数,得到一个装饰后的函数# power_sum = elapsed(power_sum)# print(power_sum(100000))#加上python的装饰器后print(power_sum(100000))