python閉包詳解(實例)
python閉包(closure)其實并不是什么很復雜的東西。通俗的講就是:如果在一個內部函數里,對在外部作用域(但不是在全局作用域)的變量進行引用,那么內部函數就被認為是閉包(closure)
“閉包”這個詞語相信大多數學過編程的同學并不陌生,但是有時候理解起來還是有一定難度。先看定義:
閉包是由函數和與其相關的引用環境組合而成的實體。比如參考資源中就有這樣的的定義:在實現深約束時,需要創建一個能顯式表示引用環境的東西,并將它與相關的子程序捆綁在一起,這樣捆綁起
來的整體被稱為閉包。
python閉包(closure)其實并不是什么很復雜的東西。
通俗的講就是:如果在一個內部函數里,對在外部作用域(但不是在全局作用域)的變量進行引用,那么內部函數就被認為是閉包(closure)。它只不過是個“內層”的函數,由一個名字(變量)來指代,而這個名字(變量)對于“外層”包含它的函數而言,是本地變量。
看到這里或許你依然不明白什么是閉包,沒關系,看完下面的小例子你一定會明白!
! /usr/bin/env python
coding=utf-8
http://www.pythontab.com
定義一個函數
在函數內部再定義一個函數,其實這個里面的函數就被認為是閉包
這里打印一下number_in變量,以便大家可以更清楚傳進來的變量時哪一個
其實這里返回的就是閉包的結果
給plus函數賦值,這個20就是給參數number
閉包是由函數和與其相關的引用環境組合而成的實體。比如參考資源中就有這樣的的定義:在實現深約束時,需要創建一個能顯式表示引用環境的東西,并將它與相關的子程序捆綁在一起,這樣捆綁起
來的整體被稱為閉包。
python閉包(closure)其實并不是什么很復雜的東西。
通俗的講就是:如果在一個內部函數里,對在外部作用域(但不是在全局作用域)的變量進行引用,那么內部函數就被認為是閉包(closure)。它只不過是個“內層”的函數,由一個名字(變量)來指代,而這個名字(變量)對于“外層”包含它的函數而言,是本地變量。
看到這里或許你依然不明白什么是閉包,沒關系,看完下面的小例子你一定會明白!
! /usr/bin/env python
coding=utf-8
http://www.pythontab.com
定義一個函數
def plus(number):
在函數內部再定義一個函數,其實這個里面的函數就被認為是閉包
def plus_in(number_in):
這里打印一下number_in變量,以便大家可以更清楚傳進來的變量時哪一個
print str(number_in) + "\r\n"
return number+number_in
其實這里返回的就是閉包的結果
return plus_in
給plus函數賦值,這個20就是給參數number
v1=plus(20)
print v1(100) #注意這里的100其實給參數number_in
運行結果:
100
120
注意:100是print str(number_in) + "\r\n"打印的結果哦
講到這里大家明白什么是閉包了吧~~
</div>
本文由用戶 ybw8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!