非局部变量和全局变量有什么区别?
答
nonlocal语句会导致列出的标识符引用最近的封闭范围中的先前绑定的变量。这很重要,因为绑定的默认行为是首先搜索本地名称空间。该语句允许封装代码重新绑定除全局(模块)作用域之外的局部作用域之外的变量。
非本地语句中列出的名称与全局语句中列出的名称不同,它们必须引用封闭范围中的预先存在的绑定(无法明确确定应创建新绑定的范围)。在外地声明中列出的
名称不能在局部范围内
见https://www.smallsurething.com/a-quick-guide-to-nonlocal-in-python-与预先存在的绑定碰撞3 / – boardrider