python中函式閉包

2021-09-25 18:32:46 字數 1235 閱讀 6863

閉包:乙個函式巢狀另乙個函式,外面的函式簡稱為外函式,裡面的為內函式,外函式返回內函式。與普通函式不同的是,普通函式呼叫完後,函式中的區域性變數消失,返回記憶體,而閉包外函式呼叫後,外函式的區域性變數沒有消失,而是繼續留給內函式使用。

1,普通函式

deffn(

):a =

2return a

fn()

print

(a)#輸出報錯name 'a' is not defined

因為a是區域性變數,函式呼叫後消失

2,閉包(函式巢狀,且返回為函式)

deffn(

):a =

1deff1(

):return a

return f1 # 返回f1函式而不是呼叫

b = fn(

)# b即為f1,b總可以訪問fn()中的變數

print

(b()

)# 呼叫f1函式

# 輸出為1

3,閉包的作用

deffn(

):a =[1

]def

f1(x)

:return a

return f1

b = fn(

)print

(b(2))

a =[

]print

(b(3))

# 輸出為[1, 2],[1, 2, 3]

可見a = 並不影響,閉包的作用是建立一些當前函式才可訪問的變數,可以將私有資料隱藏到函式中,只能通過當前函式訪問

4,閉包中例項化的物件

deffn(

):a =

deff1

(x):

return a

return f1

b = fn(

)c = fn(

)d = fn(

)print(id

(b),

id(c)

)#可見b,c為2個不同物件

print

(c(5

),c(6)

)#c為同一物件

print

(b(5

),d(6)

)# b,d為不同物件

# 輸出為2175909442968 2176160163768

#[5, 6] [5, 6] [5] [6]

函式閉包python中的閉包

本文純屬個人見解,是對前面學習的總結,如有描述不正確的地方還請高手指正 單簡說,閉包就是根據不同的置配息信到得不同的結果 再來看看專業的解釋 閉包 closure 是詞法閉包 lexical closure 的簡稱,是引用了由自變數的函式。這個被引用的由自變數將和這個函式一起存在,即使已離開了造創它...

python中閉包 python中的閉包

一 定義 如果在乙個內部函式裡,對在外部作用域 但不是在全域性作用域 的變數進行引用,那麼內部函式就被認為是閉包 closure 這個定義是相對直白的,閉包有三個條件 1.函式巢狀 2,內部函式呼叫外部函式的變數 3.返回內部函式 defa a defb b s a breturnsreturnb ...

python 閉包 Python中的閉包

一 什麼是閉包 在談之前,我們先來說說作用域,變數的作用域無非就兩種 全域性變數和區域性變數。函式內部可以直接讀取全域性變數,但是在函式外部無法讀取函式內部的區域性變數。出於種種原因,我們有時候需要獲取到函式內部的區域性變數。但是,正常情況下,這是辦不到的!只有通過變通的方法才能實現。於是就引入了閉...