在this paragraph中,可以找到以下句子(我的重点):
Names listed in a nonlocal statement, unlike those listed in a global statement, must refer to pre-existing bindings in an enclosing scope (the scope in which a new binding should be created cannot be determined unambiguously).
我用括号中粗体的带括号的句子来解释前面的句子,这意味着为了使像nonlocal a
这样的非局部语句正确,像a = 1
这样的语句在决定在哪个命名空间中添加(或修改)绑定时应该有问题,在本地名称空间或封闭名称空间中(因为存在这样一个名称空间,它已经包含名称a
的绑定)
这是正确的吗?这是意图吗
如果是的话,我相信即使在a
是全局的情况下(括号中)的措辞也适用,因为“应该在其中创建新绑定的范围不能明确确定”,这不是有意的。我说的对吗
语言引用是指外部作用域中的某个语句必须为
nonlocal
创建要引用的变量。例如,这很好:但这不是:
因为在第一个代码片段中,Python可以指出
nonlocal
应该使用来自g
函数的a
变量。在第二个代码片段中,Python必须在其中一个封闭函数中创建一个新的a
变量,但它无法判断是哪个变量相关问题 更多 >
编程相关推荐