多层装饰器的调用及执行顺序
Posted wen-kang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多层装饰器的调用及执行顺序相关的知识,希望对你有一定的参考价值。
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
以上是关于多层装饰器的调用及执行顺序的主要内容,如果未能解决你的问题,请参考以下文章
装饰器,装饰器多参数的使用(*arg, **kwargs),装饰器的调用顺序