python的装饰器顺序

装饰顺序:组装装饰器时,就近原则,从下往上装饰
执行顺序:就远原则,从上往下调用

先进入离test函数最近的装饰器,由于装饰器中返回的是函数的函数名引用,并非真正的调用函数;
到inner2后,func会真正的执行函数,会调用inner1;
到inner1中,func会调用test函数;
再从各个函数出来

def wrapper_out1(func):
    # print('--out11---')
    def inner1(*args,**kwargs):
        print('----in11----')
        res = func(*args,**kwargs)
        print('----in12-----')
        return res
    # print('---out---12')
    return inner1

def wrapper_out2(func):
    # print('--out21---')
    def inner2(*args,**kwargs):
        print('----in21----')
        res = func(*args,**kwargs)
        print('----in22-----')
        return res
    # print('---out---22')
    return inner2

@wrapper_out2
@wrapper_out1
def test(): #wrapper_out2(wrapper_out1(test)) === wrapper_out2(inner1)
    print('---test---')
    return 1 * 2

test()
print(test)

在这里插入图片描述

结果
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值