1. 程式人生 > >多層裝飾器的調用及執行順序

多層裝飾器的調用及執行順序

執行順序 賦值 **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

多層裝飾器的調用及執行順序