多層裝飾器例子

2022-08-23 07:51:13 字數 1786 閱讀 6556

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...