5

我正在学习编程语言的概念。

我在 python 语法中找到了术语“非本地”。

python中nonlocal的含义是什么?

4

2 回答 2

4

非局部变量存在于嵌套循环中。使用关键字 nonlocal 并从最近的封闭循环中获取值。一个例子是: -

def outer():
    x = "local"

    def inner():
        nonlocal x
        x = "nonlocal"
        print("inner:", x)

    inner()
    print("outer:", x)

由于 x 的值已被内部函数更改,因此两次输出都将是“非本地”的。

于 2019-10-31T09:53:39.600 回答
4

从有关非本地语句的文档中:

nonlocal 语句导致列出的标识符引用最近的封闭范围内的先前绑定的变量。这很重要,因为绑定的默认行为是首先搜索本地命名空间。该语句允许封装代码重新绑定全局(模块)范围之外的局部范围之外的变量。

与全局语句中列出的名称不同,非本地语句中列出的名称必须引用封闭范围中的预先存在的绑定(无法明确确定应创建新绑定的范围)。

非本地语句中列出的名称不得与本地范围内的预先存在的绑定冲突

于 2015-10-19T09:54:05.147 回答