本说明包含: 1.装饰器基本结构 2.装饰器的批量操作 3.带参语法糖的含义
装饰器的作用
装饰器是用来对装饰的函数进行功能扩充的。
那为什么不直接对函数进行更改呢?因为遵守开发原则中的开放封闭原则:对修改封闭,对扩展开放。
所以我用装饰器来完成一些功能扩展、临时bug修复等操作。
def wrapper (func):
def inner():
#装饰代码
f_ret func()
return f_ret # func的函数返回值的再次返回
return inner #返回内包函数的地址,让全局可以调用 inner函数
@wrapper #语法糖
def func():
pass
通过刚才的代码,发现了一个叫语法糖的东西。那什么是语法糖呢?
语法糖
简单理解,就是为了优化语法结构,让开发者使用的一种语法。
因为python要求美观简洁,但是在实际开发过程中,不可避免的会用到一些破坏整体代码美观性的一些语句。
语法糖不但解决了视觉感官方面,且提高了代码的可阅读行。
#关于装饰器的语法糖
@wrapper # fun = wrapper(fun) !!只能是语法糖下面紧挨着的函数,或者另一个语法糖。
def fun():
pass
def wrapper (flag)
def wrapp (func):
def inner():
#装饰代码
flag #可以用到参数
f_ret func()
return f_ret # func的函数返回值的再次返回
return inner #返回内包函数的地址,让全局可以调用 inner函数
return wrapp
@wrapper(flag)
#当看见语法糖带参数时,需要分开来解释。
#首先要执行函数wrapper(flag) 那返回值就是 wrapp。
#这就变成了@wrapp 就和以前语法糖一样了
def fun():
pass
装饰器批量操作中
看到了带参语法糖,好像没什么特别的。非也非也!
既然带进来参数我们就可以尽情运用了,可以关闭装饰功能,可以修改装饰效果等。