閉包 Python從入門到放棄

閉包

概念

簡單說,閉包就是根據不一樣的配置信息獲得不一樣的結果閉包

再來看看專業的解釋:閉包(Closure)是詞法閉包(Lexical Closure)的簡稱,是引用了自由變量的函數。這個被引用的自由變量將和這個函數一同存在,即便已經離開了創造它的環境也不例外。因此,有另外一種說法認爲閉包是由函數和與其相關的引用環境組合而成的實體。函數

例子

def make_adder(addend):spa

def adder(augend):變量

return augend + addend配置

return adder引用

p = make_adder(23)make

q = make_adder(44)生成

print p(100)return

print q(100)參數

運行結果:

123

144

 

分析一下:

咱們發現,make_adder是一個函數,包括一個參數addend,比較特殊的地方是這個函數裏面又定義了一個新函數,這個新函數裏面的一個變量正好是外部make_adder的參數.也就是說,外部傳遞過來的addend參數已經和adder函數綁定到一塊兒了,造成了一個新函數,咱們能夠把addend看作新函數的一個配置信息,配置信息不一樣,函數的功能就不同了,也就是能獲得定製以後的函數.

再看看運行結果,咱們發現,雖然p和q都是make_adder生成的,可是由於配置參數不一樣,後面再執行相同參數的函數後獲得了不一樣的結果.這就是閉包

相關文章
相關標籤/搜索