閉包
python的裝飾器首先要了解閉包是什麼?
閉包函式:
defwai(n):
defnei():
sum_num =0
for i in
range(n):
sum_num = sum_num +i
return
sum_num
return
neires = wai(4)
(res)
(res())
.nei at 0x0000016c95e0f6a8>
6
a = wai(4)b = wai(4)
(id(a))
(id(b))
3126981621416
3126981621552
裝飾器上面的例子看完我們再看看正經寫**時的規範。也就是用@符號代替了res = wai(func)和res()這兩個步驟,方便寫**。我們只需要呼叫被裝飾函式即可。
defwai(func):
defnei():
print('
這是函式傳入之前的操作')
func()
print('
這是函式傳入之後的操作')
return
nei@wai
deffunc():
print('
我是被裝飾的函式')
func()
這是函式傳入之前的操作
我是被裝飾的函式
這是函式傳入之後的操作
裝飾器的分類
閉包 裝飾器
外部函式返回內部函式的引用 內部函式可以直接使用外部函式的環境變數 語法 外部函式通過返回內部函式的引用 內部函式可以直接使用外部函式的 環境變數 自由變數 函式執行時間統計 執行函式前預備處理 執行函式後清理功能 許可權校驗等場景 快取有且只有乙個引數 指向了被裝飾的函式的引用 使用裝飾器 裝飾器...
閉包,裝飾器
多層函式巢狀,函式裡面還有定義函式,一般是兩個 往往內層函式會用到外層函式的變數,把內層函式以及外部函式的變數當成乙個特殊的物件,這就是閉包。閉包比物件導向更純淨 更輕量,既有資料又有執行資料的 比普通函式功能更強大,不僅有 還有資料 利用閉包的基本原理,對乙個目標函式進行裝飾,即在執行乙個目標函式...
閉包 裝飾器
定義乙個函式 def test number 在函式內部再定義乙個函式,並且這個函式用到了外邊函式的變數,那麼將這個函式及用到的一些變數稱之為閉包 def test in number in print in text in 函式,number in is d number in return nu...