在函数内部再定义一个函数,并且这个函数用到外边的函数的变量,那么将这个函数以及用到的一些变量称为闭包
例子1:
1 | def test(A): |
例子2:
1 | def test A(a,b): |
函数test与变量a,b构成闭包,创建闭包时通过,test_A的参数a,b 说明两个变量的取值,确定函数最终形成(y =x + 1 和 y =4x + 5)只需要变换参数a,b 就可以获得不同的直线表达函数。
闭包也具有提高代码可复用性的作用。
如果没有闭包,需要更多的参数传递,也减少代码可移植性,由于闭包引用外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存。
函数里嵌套定义函数,并且内层函数使用外层函数的变量或参数,外层函数要返回这个内层函数。
内层函数及使用外层函数的变量或参数形成一个闭包。