-
返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
-
闭包中内部函数可以引用外部函数的参数和变量,同时也只能引用,不能改变,解决办法有二:
a. 将要改变的变量设置为一个容器,比如列表List或字典Dict,然后通过改变元素来改变变量(文中不推荐);
b. 将要改变的变量声明为nonlocal变量(仅在Python3支持),这样声明过后,就不会被认为是内部函数的局部变量,而是会到上一层函数环境中寻找这个变量。
参考:https://www.liaoxuefeng.com/wiki/1016959663602400/1017434209254976