一:装饰本质就是函数,功能是为其他函数添加附加功能
二:原则:
1)不修改被修饰函数的源代码
2)不修改被修饰函数的调用方式
三:装饰器的实现
1)装饰器=高阶函数+函数嵌套+闭包
示例:将下列函数增加一个执行时间的功能
import time def cal(l): res=0 for i in l: res+=i return res ret=cal(range(20)) print(ret)
此时为了保证装饰器的原则,我们需要另外写一个执行时间的函数
给函数添加装饰器,实现打印出运行时间的功能 def timer(func): def wapper(*args,*kwargs): starttime = time.time() res = func(*args,**kwargs) stoptime = time.time() print("函数的运行时间为:%s" %(stoptime-starttime)) return res return wapper
装饰器的用法:在第一个函数中声明一下即可@timer
@timer def cal(l): res=0 for i in l: res+=i return res ret=cal(range(20)) print(ret)