Python的闭包


在函数内部再定义一个函数,并且这个函数用到外边的函数的变量,那么将这个函数以及用到的一些变量称为闭包

例子1:

1
2
3
4
5
6
7
8
9
10
def test(A):
def test_in(A_in):
print('in test_in函数,A_in is%d' %A_in)
return A+A_in

return A_in #返回其实就是闭包结果
ret = test(20)
print(ret(100))
print(ret(200))

例子2:

1
2
3
4
5
6
7
8
def test A(a,b):
def test(x):
return a*x+b
return test
test1 = test_A(1,1)
test2 = test_A(4,5)
print(test1(5))
print(test2(5))

函数test与变量a,b构成闭包,创建闭包时通过,test_A的参数a,b 说明两个变量的取值,确定函数最终形成(y =x + 1 和 y =4x + 5)只需要变换参数a,b 就可以获得不同的直线表达函数。

闭包也具有提高代码可复用性的作用。

如果没有闭包,需要更多的参数传递,也减少代码可移植性,由于闭包引用外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存。
函数里嵌套定义函数,并且内层函数使用外层函数的变量或参数,外层函数要返回这个内层函数。
内层函数及使用外层函数的变量或参数形成一个闭包。


文章作者: Gera Tear
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Gera Tear !
评论
  目录