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 欢迎转载,也请保留这段声明。谢谢!