Python 閉包

1,閉包概念

閉包(closure)是函數式編程的重要的語法結構。一個函數和它的環境變量合在一起,就構成了一個閉包(closure)。在Python中,閉包即一個包含有環境變量取值的函數對象。 環境變量取值被保存在函數對象的__closure__屬性中。

eg1.

def line_conf():
    b = 15  #環境變量
    def line(x):
        return 2*x+b
    return line       # return a function object  line爲一個函數對象

b = 5
my_line = line_conf()
print(my_line.__closure__)  #(<cell at 0x000000B98F420B58: int object at 0x000000005FD454E0>,)
print(my_line.__closure__[0].cell_contents) #15

eg2:

def line_conf(a, b):
    def line(x):
        return a*x + b
    return line

line1 = 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,就可以獲得不同的直線表達函數。由此,我們可以看到,閉包也具有提高代碼可複用性的作用。

作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章