『』『』
閉包 針對函式而言,是在在函式中提出的概念:
條件:1.外部函式中定義了內部函式(即有函式巢狀)
2.外部函式有返回值
3.外部函式返回的值是:內部函式名(即函式入口位址) 為方便記憶不搞混淆,我們這裡可以說返回的是函式名
4.內部函式呼叫(引用)了外部函式的變數 不引用不叫嚴格的閉包
格式:def 外部函式():
…def 內部函式():
…return 內部函式名
『』』
def
func()
: a =
100def
inner_func()
: b =
90print
(a,b)
# print(a)
# inner_func()
# 直接訪問,在外界是訪問不了函式內部的變數和函式
有這樣乙個需求我們想在外界想要訪問函式內部a的值那麼如何拿到呢?
def
func()
: a =
100def
inner_func()
: b =
90print
(a,b)
return a # 這裡把函式的a給仍出去了
# 外界接收一下a
x = func(
)print
(x)
訪問函式內部的函式呢?而不是在內部呼叫函式,同理既然可以扔出a 那麼也就可以把函式扔出去(注意:這裡扔出去的是函式名)下面通過locals()列印看出端倪
def
func()
: a =
100def
inner_func()
: b =
90print
(a,b)
# inner_func() # 這裡是內部呼叫函式
print
(locals()
)# 作用是把函式裡面宣告的變數展示出來 列印結果: 通過列印就不過多解釋
return inner_func # 這裡把函式的給仍出去了
# 外界接收一下函式
x = func(
)print
(x)# 列印結果.inner_func at 0x000001262e712510> 通過列印我們知道x內部函式,就是func_inner函式
# 我們知道怎麼呼叫函式呢? 函式名+括號 x()x()
# 列印結果 100 90
# 閉包
deffunc
(a,b)
: c =
10def
inner_func()
: s = a+b+c
print
('相加之後的結果是:'
,s)return inner_func
# func(6,9)() 這是一種快捷呼叫方法
# 呼叫func
ifunc = func(6,
9)# ifunc變數就是inner_func ifunc = inner_func
# 呼叫返出來的內部函式
ifunc(
)
Python之我對閉包的理解2
1.儲存返回返回閉包時的狀態 外層函式值的狀態 def func a,b c 10def inner func 建立乙個內部函式就佔乙個位址,扔出來的是不會被 的 s a b c print 相加之後的結果是 s print locals return inner func 呼叫func func ...
python中對閉包的理解(1)
今天聊下python中閉包的用法,首先它是在函式內再定義乙個函式,內部定義的函式可以引用外部函式的引數和區域性變數,在呼叫外部函式時返回的是內部函式,但是不會立馬執行內部函式的程式體,需要單獨呼叫內部函式才會去執行。下面的程式就是閉包 首先正常定義乙個求和函式 def sum args s 0 fo...
閉包學習之我的理解
學習資料 url demo toggle 如下例,內部函式引用外部函式的變數 這裡是變數i 該內部函式即形成閉包,閉 是指內部函式中的變數對於外部不可見 而內部函式可以引用外部變數 思考 照此理解,我們應該經常在不知不覺中使用著閉包,只要我們在客戶端環境下定義乙個函式,而 該函式引用了全域性變數,那...