自閉式學習 我太菜了qaq
1.在函式裡面定義乙個變數,並且這個函式用到了外邊函式的變數,那麼將這個函式以及用到的一些變數稱之為閉包
def
test
(number)
:def
test_in
(number_in)
:print
("in test_in 函式,number_in is %d"number_in)
return number+number_in
#在內部函式裡面用到了外面的函式的值number
#這裡返回的就是閉包結果
return test_in
真實情況下的閉包
def
test
(number)
:print
('---1---'
)def
test_in()
:print
("___2___"
)print
(number+
100)
print
("---3---"
)return test_in
#print函式輸出的東西是為了測試函式會不會執行列印三個不同的數字為了測試執行順序
ret = test(10)
print
("-"*30
)#此時ret指向的是函式閉包裡面的函式test_in
ret(
)#最後使用呼叫ret的方式才能呼叫函式內部包含的函式
呼叫順序
例子
優勢1、簡化了傳參方式
2、可以設定固定值,只修改需要修改的變數
不同的函式本質上是記憶體的不同分配,如上圖所示,在傳入另一組值的時候,函式建立了新的記憶體空間。
python學習筆記 閉包
乙個函式a和乙個函式b,其中b函式位於a函式體內部,同時b函式體內呼叫了b函式之外,a函式之內的其他變數x 包括a中傳遞過來的引數 此時,x稱為b函式的環境變數,b函式和變數x就構成了乙個閉包。而函式b是需要返回的,也就是返回函式b,其中在返回的時候,對a引數x的呼叫也包括在了裡面,有點封閉包含的意...
Python學習筆記 閉包
在學習閉包之前,我們先要弄懂一件事兒。同理 test其實就是乙個變數,變數中存放著函式體的位址,就像a變數中存放著100的位址一樣。t test實質上就是淺拷貝行為。將變數test中的位址存放到變數t中 我們如果要呼叫test函式,test 當t獲取了函式體的位址後,同樣可以以t 的形式呼叫函式 注...
Python之閉包學習筆記
走棋子是乙個很好的例子理解為什麼用閉包。資料來自網易雲課堂 假設需求是給定一顆在 0,0 位置的棋子,使用者互動輸入移動方向與步數,寫乙個函式記錄棋子的位置變化。這個函式可以是這樣的 以使用者輸入的方向與步數變數為引數,計算出移動後的位置值作為函式返回值。那麼走第一步時,基於初始位置值 0,0 做計...