今天聊下python中閉包的用法,首先它是在函式內再定義乙個函式,內部定義的函式可以引用外部函式的引數和區域性變數,在呼叫外部函式時返回的是內部函式,但是不會立馬執行內部函式的程式體,需要單獨呼叫內部函式才會去執行。下面的程式就是閉包
首先正常定義乙個求和函式:
def sum(*args):
s = 0
for i in args:
s += i
return s
print(sum(1,2,3,4,5,6))
執行結果:
在呼叫sum()函式時就會返回計算結果。
現在把這個函式定義在另乙個函式的內部:
def lazy_sum(*args):
def sum():
s = 0
for i in args:
s += i
return s
return sum
內部函式引用了外部函式的引數args,外部函式最後返回的是內部函式sum,在呼叫lazy_sum()函式時,我們看下返回的是什麼
f1 = lazy_sum(1,0,9,8,7,6,5)
print(f1)
執行結果:
.sum at 0x000000a05e2f01e0>
可以看到外部函式最後返回的是乙個函式,引數和變數儲存在該函式中,此時並沒有執行函式體,需要在呼叫f1才會執行函式,因為每次返回都是返回乙個函式儲存演算法和相關資料,所以每次呼叫lazy_sum()返回的函式是不同的,即使填入的引數一樣。呼叫函式f1的結果。
print(f1())
執行結果:
閉包的簡單概念就介紹到這,下次再繼續**
Python之我對閉包理解1
閉包 針對函式而言,是在在函式中提出的概念 條件 1.外部函式中定義了內部函式 即有函式巢狀 2.外部函式有返回值 3.外部函式返回的值是 內部函式名 即函式入口位址 為方便記憶不搞混淆,我們這裡可以說返回的是函式名 4.內部函式呼叫 引用 了外部函式的變數 不引用不叫嚴格的閉包 格式 def 外部...
對閉包的理解
閉包是什麼 答 閉包就是能夠讀取其他函式內部變數的函式。閉包函式生效的兩個條件 1 必須先定義乙個匿名函式 2 必須要執行一次匿名函式生成閉包函式 匿名函式 匿名函式 demo1 function name 呼叫匿名函式 echo demo1 張無忌 匿名函式也有自己的作用域,除了傳參,還有什麼方式...
理解Python中的閉包
理解python中的閉包 1.定義 閉包是函式式程式設計的乙個重要的語法結構,函式式程式設計是一種程式設計正規化 而面向過程程式設計和物件導向程式設計也都是程式設計正規化 在面向過程程式設計中,我們見到過函式 function 在物件導向程式設計中,我們見過物件 object 函式和物件的根本目的是...