多層裝飾器的調用及執行順序
阿新 • • 發佈:2018-07-11
執行順序 賦值 **kwargs urn return inter int 順序 app
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
多層裝飾器的調用及執行順序