Python参考语言:非局部定义

2024-09-29 23:17:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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是全局的情况下(括号中)的措辞也适用,因为“应该在其中创建新绑定的范围不能明确确定”,这不是有意的。我说的对吗


Tags: in名称重点names空间语句bethis
1条回答
网友
1楼 · 发布于 2024-09-29 23:17:15

语言引用是指外部作用域中的某个语句必须为nonlocal创建要引用的变量。例如,这很好:

def f():
    def g():
        a = 3
        def h():
            def i():
                nonlocal a
                print(a)

但这不是:

def f():
    def g():
        def h():
            def i():
                nonlocal a
                print(a)

因为在第一个代码片段中,Python可以指出nonlocal应该使用来自g函数的a变量。在第二个代码片段中,Python必须在其中一个封闭函数中创建一个新的a变量,但它无法判断是哪个变量

相关问题 更多 >

    热门问题