第一次在闭包中遇到nonlocal。在闭包中修改自由变量(不可变)的值时,需要声明为nonlocal,才能正常使用。当时有一个疑问:nonlocal和global有什么区别?经过进一步研究,我得到了答案:函数中使用了nonlocal,当子函数修改父函数定义的变量时;global是模块级变量,如果在函数中修改了它的值,需要用global声明。简而言之:globa变量的作用域是模块级的,nonlocal变量的作用域是函数级的

第一次在闭包中遇到nonlocal。在闭包中修改自由变量(不可变)的值时,需要声明为nonlocal,才能正常使用。当时有一个疑问:nonlocal和global有什么区别?经过进一步研究,我得到了答案:函数中使用了nonlocal,当子函数修改父函数定义的变量时;global是模块级变量,如果在函数中修改了它的值,需要用global声明。简而言之:globa变量的作用域是模块级的,nonlocal变量的作用域是函数级的