非局部变量和全局变量之间有什么区别?

时间:2015-10-19 09:44:02

标签: programming-languages python-nonlocal

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

我找到了术语" nonlocal"用python语法。

python中的nonlocal是什么意思?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

非局部变量存在于嵌套循环中。使用关键字nonlocal并采用最近的封闭循环中的值。一个例子是: def external():     x =“本地”

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

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

由于内部函数更改了x的值,因此两次输出均为“非本地”。