装饰器,见名知意,就是在执行原有的代码块时,在其之前或之后加上一些额外的处理,但是不修改原有的代码块。装饰器可以做到在不修改原有的基础上为其做处理,有点相当于Java中面向切面思想一样。
代码示例
def outer(func):
def inner(*args,**kwargs):
print('饭前要有甜点!!给我一杯香草味的冰激凌!') #原有函数前加装饰
func(*args,**kwargs) #相当于原有函数
print('饭后一支烟,赛过活神仙!') #原有函数后加装饰
return inner #返回内置函数 ==> 闭包思想
@outer
def eat(*args,**kwargs): #原有函数
print('开饭!')
print(args,kwargs)
L=['主食','汤','菜']
F={'主食':'大米','汤':'十全大补汤','菜':'满汉全席'}
eat(*L,**F)
在上面的代码块中,eat函数上面加了 @outer ,相当于加了outer函数这个装饰器,并没有改变原有代码。相当于把eat函数作为实参传入outer函数内,代替了原有func形参的位置!
运行结果
用上装饰器,可以在很多场景很方便做你想做的,比如说打印日志之类的非功能性代码;用了装饰器,可谓是赢得生前身后名了!
如果有解释的错的地方,希望大家给出建议,谢谢!