国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python閉包

2019-11-06 07:10:50
字體:
來源:轉載
供稿:網友

閉包

一個函數和它的環境變量合在一起,就構成了一個閉包(closure)。在Python中,所謂的閉包是一個包含有環境變量取值的函數對象。環境變量取值被保存在函數對象closure)屬性中。

例1

def line_conf(): b = 15 def line(x): return 2*x+b return line # return a function objectb = 5my_line = line_conf()PRint(my_line.__closure__)print(my_line.__closure__[0].cell_contents)

例2

另一個經典的閉包例子:

def line_conf(a, b): def line(x): return a*x + b return lineline1 = line_conf(1, 1)line2 = line_conf(4, 5)print(line1(5), line2(5))

這個例子中,函數line與環境變量a,b構成閉包。在創建閉包的時候,我們通過line_conf的參數a,b說明了這兩個環境變量的取值,這樣,我們就確定了函數的最終形式(y = x + 1和y = 4x + 5)。我們只需要變換參數a,b,就可以獲得不同的直線表達函數。由此,我們可以看到,閉包也具有提高代碼可復用性的作用。

如果沒有閉包,我們需要每次創建直線函數的時候同時說明a,b,x。這樣,我們就需要更多的參數傳遞,也減少了代碼的可移植性。利用閉包,我們實際上創建了泛函。line函數定義一種廣泛意義的函數。這個函數的一些方面已經確定(必須是直線),但另一些方面(比如a和b參數待定)。隨后,我們根據line_conf傳遞來的參數,通過閉包的形式,將最終函數確定下來。

例3

def make_adder(addend): def adder(augend): return augend + addend return adderp = make_adder(23)q = make_adder(44)print p(100)print q(100)

運行結果:

123 144

例4

對函數(參數,返回值等)進行加工處理,生成一個功能增強版的一個函數。 python里面的好多高級功能,比如裝飾器,生成器,列表推到,閉包,匿名函數等,開發中用一下,可能會達到事半功倍的效果!

參考文章: http://www.cnblogs.com/vamei/archive/2012/12/15/2772451.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平利县| 随州市| 黄冈市| 富源县| 襄樊市| 英吉沙县| 恭城| 资中县| 石家庄市| 拜城县| 炎陵县| 聂拉木县| 泽州县| 榆树市| 迁安市| 张家港市| 临汾市| 读书| 五家渠市| 吴川市| 安阳市| 湖口县| 沧州市| 梧州市| 闸北区| 万盛区| 高雄县| 三门峡市| 舟山市| 普陀区| 张北县| 中牟县| 夏津县| 池州市| 六安市| 葫芦岛市| 荃湾区| 汨罗市| 北辰区| 慈利县| 慈利县|