关于python装饰器

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

带点参数其实一个意思。领悟吧!
代码都测试过的哈!没骗你。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值