装饰器
器:工具
装饰:指的是为被装饰对象添加功能
装饰器本身可以是任意调用的对象==》函数
被装饰对象也是可以被任意可任意调用的对象==》函数
目标:写一个函数来为另外一个函数添加新功能
2.为何要使用装饰器?
开放封闭原则:软件一旦上线就应该对修改封闭,对扩展开放。
对修改封闭:
1.不能修改功能的源代码
2.也不能修改功能的调用方式
对扩展开放原则:
可以为原有功能的基础上添加功能
装饰器就是在不能修改源代码和调用的方式的前提下为原功能添加额外的新功能
如何使用装饰器?
无参装饰器模板
def otter(func):#func参数接受被修饰函数的 def wrapper(*args,**kwargs): res = func(*args,**kwargs)#就原函数的参数 #为其添加功能 return res#返回func的返回值 return wrapper#闭包函数,让外部调用
使用方式
@outter def f1(): print('f1 run') #@outtrt 相当于 f1 = outter(f1) #调用 f1()