python装饰器
装饰器是个啥?
很多人不理解装饰器是什么,那我打个比方吧!
裤衩可以保护我们的小兄弟,可是到了冬天,只穿裤衩就会很冷,于是有人就发明了长裤,有了长裤之后就不冷了,所以长裤就相当于装饰器,在不印象裤衩的功能的同时增加新的功能保暖。本质是个啥?
装饰器本质其实是个python函数,他可以在不改变不影响其他函数的同时,对其他函数增加额外功能。它主要用于:
插入日志,性能测试,事务处理,缓存等。
举个例子
简单的装饰器:
def outer(fun):
def wrapper(args):
print('sda')
fun(args)
return wrapper
@outer
def fun1(args):
print('ykerit',args)
fun1('hahha')
上面的例子结果:
我们可以看出首先执行@outer函数,接着执行wrapper()函数再执行 fun1()函数。
复杂点的
def filter(before_func,after_func):
def outer(main_func):
def wrapper(reqest,kargs):
before_result=before_func(request,kargs)
if(before_result!=none):
return before_result
main_result=main_func(request,kargs)
after_result=after_func(request,karfs)
if(after_result!=none):
return after_result
return wrapper
return outer
@filter(AccountFilter.before,AccountFilter.after)
def list(request,kargs):
pass
带点参数其实一个意思。领悟吧!
代码都测试过的哈!没骗你。