有的时候容将闭包和匿名函数混淆
什么时候会有闭包的问题呢?只要在设计嵌套函数时才有闭包问题。关键之处在于它能不能访问定义体之外定义的非全局变量。
闭包是一种函数,他会保留定义函数时存在的自由变量的绑定。(自由变量:未在本地作用域中绑定的变量)
注意下面的例子:
这时候会报错
count 是数字或者任意不可变的类型时, count 被赋值,则就变成了局部变量
为了解决上述问题:
python3中用nonlocal 关键字声明
python2中呢,可以定义一个可变类型的对象,然后将对象绑定给一个自由变量