def分析呼叫過程outter1(func1):
print('
載入了outter1')
print('')
res1=func1(*args,**kwargs)
return
res1
return
defoutter2(func2):
print('
載入了outter2')
print('')
res2=func2()
return
res2
return
defoutter3(func3):
print('
載入了outter3')
print('')
res3=func3(*args,**kwargs)
return
res3
return
@outter1
@outter2
@outter3
defindex():
print('
from index')
index()
@outter1 #分析完呼叫順序後我們來看它的執行順序@outter2 #
@outter3 #
defindex():
print('
from index')
# ###
"""載入了outter3
載入了outter2
載入了outter1
"""
def然後我們來看最終的執行結果outter1(func1):
print('
載入了outter1')
print('
') #
res1=func1(*args,**kwargs) #
return
res1
return
defoutter2(func2):
print('
載入了outter2')
print('
') #
res2=func2() #
return
res2
return
defoutter3(func3):
print('
載入了outter3')
print('
') #
執行wraper3時列印這句話
res3=func3(*args,**kwargs) #
然後到了這一步要呼叫func3,於是執行func3,而根據之前推導的結果我們知道,func3其實就是outter3括號中的index
return
res3
return
@outter1
@outter2
@outter3
def index(): #
執行index函式
print('
from index
') #
列印這句話
index()
#根據執行過成我們可以得到,執行過程中列印的三句話是這樣的:
""""""
小結:多層裝飾器在裝飾的時候,它的順序是由下往上,而在執行的時候,它的順序由上到下。
Python 多層裝飾器
python 的裝飾器能夠在不破壞函式原本結構的基礎上,對函式的功能進行補充。當我們需要對乙個函式補充不同的功能,可能需要用到多層的裝飾器。在我的使用過程中,遇到了兩種裝飾器層疊的情況,這裡把這兩種情況寫下來,作為踩坑記錄。def a func defdecorated c fune defdeco...
python 多層裝飾器
25 多層裝飾器 1 原理 執行順序從上往下,2和 3組成乙個函式假設為nf1,1和nf1組成乙個函式nnf1 f1成為ck ty of us的inner函式即nf1。nf1成為check login的inner函式即nnf1。詳細參照alex的多層裝飾器講解。1 check login 2 ck ...
多層裝飾器的執行問題
首先講到多層裝飾器的時候老師都會這麼說 多個裝飾器的呼叫順序是自下往上,但是執行時的執行順序是自上往下!但是呢,我們並不知道為什麼是這樣的,於是抱著求真務實,積極努力,奮發圖強的精神。我反覆試了 設定斷點,看看內部到底發生了啥 先把測試用的 放上來 def decorator a func prin...