闭包的理解

有的时候容将闭包和匿名函数混淆

什么时候会有闭包的问题呢?只要在设计嵌套函数时才有闭包问题。关键之处在于它能不能访问定义体之外定义的非全局变量。

闭包是一种函数,他会保留定义函数时存在的自由变量的绑定。(自由变量:未在本地作用域中绑定的变量)

闭包的理解

 

注意下面的例子:

闭包的理解

这时候会报错

count 是数字或者任意不可变的类型时, count 被赋值,则就变成了局部变量

 

为了解决上述问题:

python3中用nonlocal 关键字声明

闭包的理解

python2中呢,可以定义一个可变类型的对象,然后将对象绑定给一个自由变量