多层装饰器的调用及执行顺序

本文通过一个具体的Python示例,详细解析了多个装饰器的加载及执行顺序,展示了装饰器如何一层层包裹目标函数,并最终执行的过程。理解装饰器的加载顺序对于正确使用装饰器非常重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 def wrapper1(func):      #func= get_inter2
 2     def get_inter1(*args,**kwargs):
 3         print('get1——前')
 4         f=func(*args,**kwargs)    #调用get_inter2()
 5         print('get1——后')
 6         return f
 7     return get_inter1
 8 
 9 def wrapper2(func):       #func=get_inter3
10     def get_inter2(*args,**kwargs):
11         print('get2——前')
12         f=func(*args,**kwargs)     #调用show   被执行
13         print('get2——后')
14         return f
15     return get_inter2
16 
17 def wrapper3(func):       #func=show
18     def get_inter3(*args,**kwargs):
19         print('get3——前')
20         f=func(*args,**kwargs)     #调用show   被执行
21         print('get3——后')
22         return f
23     return get_inter3
24 
25 @wrapper1    #show=wrapper1(show) 相当于wrpper1(get_inter2)  ---->return get_inter1  #show在执行完上述三步后已经被赋值>>>get_inter1
26 @wrapper2    #show=wraaper2(show) 相当于wrapper2(get_inter3) ==get_inter2
27 @wrapper3    #show=wrapper3(show) ==get_inter3
28 def show():
29     print('hello python')
30     return 'Ojbk'
31 re=show()    #调用get_inter1()
32 print(re)    #打印'Ojbk'
33 
34 #装饰器的加载顺序是 wrapper3-->wrapper2-->wrapper1

 

转载于:https://www.cnblogs.com/wen-kang/p/9293898.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值