装饰器:
即是用一个函数去拓展另一个函数,同时遵循开放封闭原则
开放封闭原则
对修改关闭,对拓展开放
不允许修改源代码以及调用方式
以下是无参函数的基本格式
def outer(func):
def wrapper(*args,**kwargs):
# 新功能
res=func(*args,**kwargs)
return res
return wrapper
无参函数的语法糖是
@装饰器函数名称 必须写在被装饰函数的正上方
而且装饰器的定义,必须在被装饰函数的上方
也可以使用多个装饰器函数给同一个函数装饰
@装饰器1
@装饰器2
def func()
pass
装饰顺序是先装饰器2给func装饰,然后是装饰器1
调用的时候是装饰器1先执行,然后是装饰器2的代码,然后是func()
有参装饰器模板
def m_outter(file):
def outter(func)
def wrapper(*args,**kwargs):
#函数体代码
res=func(*args,**kwargs)
return res
return wrapper
return outter
上面是有参装饰器模板,使用m_outter函数给内部装饰器进行传值,
如果内部wrapper()需要借助外部函数给其传值,则使用有参装饰器,
有参数装饰器的语法糖
@m_ouuter(参数)
func #被装饰函数