定義三個函式, 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但是這裡我們又提出新的要求了,python 裡面有沒有更便捷的方法能,肯定是有的。f1 = w1( f1 )
f1()
這樣我們呼叫起來就比較方便了。
我們直接在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 子元素全為浮動元素的元素高度自適應問題。以下詳...