Python 基礎 5 閉包

2021-08-26 23:15:53 字數 729 閱讀 3164

什麼是 python 的閉包,通俗來講就是定義兩個函式,其中乙個函式在另乙個函式體裡,外面的函式的返回值是函式

體內函式的記憶體位址,

這能有什麼用呢, 閉包最大的優點就是,當外部函式執行完成後裡面的變數值不會馬上被銷毀。

#簡單的閉包函式

def func (name):

def func_in (age):

return ("第乙個函式的引數是---->(%s),第二個函式的引數是---->(%s)"%(name,age))

return func_in

>>> f=func('小明')

>>> print(f.(12))

>>> print(f(12))

第乙個函式的引數是---->(小明),第二個函式的引數是---->(12)

>>> print(f(13))

第乙個函式的引數是---->(小明),第二個函式的引數是---->(13)

>>> print(f(14))

第乙個函式的引數是---->(小明),第二個函式的引數是---->(14)

我在呼叫第二個函式f的時候有沒傳入name引數,但是func_in函式確可以找到name引數

這個說明name引數在func呼叫的時候已經被儲存在f內

注意: return 的一定是func_in 而不是func_in(), func_in()表示呼叫函式,func_in 表示返回改函式的記憶體空間

python基礎 閉包

摘自廖雪峰老師的部落格 返回閉包時,返回函式中不要引用任何後續可能變化的變數 如果一定要引用,就在原返回函式中再定義乙個函式,用該函式中的引數繫結可能變化的變數的當前值。def count fs for i in range 1,4 def f return i i return fs f1,f2,...

python 閉包 python 閉包

閉包 因為python中函式也可以當作物件,所以如果出現當我們返回乙個函式,而該函式含有外部變數的時候就形成了閉包。閉包的特點 是個巢狀函式 可以獲得非區域性的變數 將函式當作物件返回 看乙個例子會更易理解 def make printer msg msg hi there def printer ...

Python基礎10 閉包

內層函式引用了外層函式的變數 引數也算變數 然後返回內層函式的情況,稱為閉包 closure def calc sum lst deflazy sum return sum lst return lazy sumdef lazy sum args defsum ax 0 for n in args ...