正確理解裝飾器

2021-08-17 16:46:55 字數 2061 閱讀 7746

定義三個函式, w1函式內定義乙個內部函式,w1函式的返回值是乙個函式名

def

w1(func):

definner

(): print("----------驗證------------")

func()

return inner

deff1

(): print("---------f1----------")

deff2

(): print("----------f2----------")

test = w1( f1 )

test()

這相當於將f1函式傳遞給w1返回乙個函式名,用test接收,也相當於test指向inner函式 test()就相當於呼叫這個inner函式所以執行完結果是

print("----------驗證------------")

print("---------f1----------")

但是這樣寫雖然可以,但是有時候因業務需要可能還不滿足需求我們可以將test換成 f1

f1 = w1( f1 )

f1()

這樣我們呼叫起來就比較方便了。

但是這裡我們又提出新的要求了,python 裡面有沒有更便捷的方法能,肯定是有的。

我們直接在f1 和 f2 函式前加上乙個裝飾器也就是

def

w1(func):

definner

(): print("----------驗證------------")

func()

return inner

@w1def

f1():

print("---------f1----------")

@w1def

f2():

print("----------f2----------")

經測試結果是一樣的

f1()

f2()

列印出來的結果為:

print

("----------驗證------------")

print

("---------f1----------")

print

("----------驗證------------")

print

("---------f2----------")

以上是裝飾器最簡單的一部分應用

def

makebold

( fn ):

def():

print("-----1------")

return

""+fn()+""

defmakeitalic

( fn ):

def():

print("------2------")

return

""+fn()+""

@makebold

@makeitalic

deftest3

()print

("------3-----")

return "hello

world 3"

ret = test3()

print(ret)

執行完後結果為:

------1------

------2------

------3------hello world 3

附一張前輩們解釋的詳圖

簡單例子理解裝飾器

python中的裝飾器可謂極其神秘,雖然常聽到,使用裝飾器會讓 如虎添翼,網上更是用 外面加長褲來形象的解釋裝飾器,但我硬是看了很多次都不得要領。但我不能就這麼放棄啊,終於還是搞明白了點點,雖然不全面,但也算對裝飾器有了初步的了解吧。usr bin env python2 coding utf 8 ...

正確理解 clear both

要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...

正確理解 clear both

原文 要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳...