閉包 裝飾器

2022-08-11 16:27:11 字數 892 閱讀 2957

閉包

python的裝飾器首先要了解閉包是什麼?

閉包函式:

def

wai(n):

defnei():

sum_num =0

for i in

range(n):

sum_num = sum_num +i

return

sum_num

return

neires = wai(4)

print

(res)

print

(res())

​.nei at 0x0000016c95e0f6a8>

6

a = wai(4)

b = wai(4)

print

(id(a))

print

(id(b))

​3126981621416

3126981621552

裝飾器上面的例子看完我們再看看正經寫**時的規範。也就是用@符號代替了res = wai(func)和res()這兩個步驟,方便寫**。我們只需要呼叫被裝飾函式即可。

def

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