【发布时间】:2016-01-17 14:44:55
【问题描述】:
我正在学习编程语言的概念。
我在 python 语法中找到了术语“非本地”。
python中nonlocal是什么意思??
【问题讨论】:
标签: programming-languages python-nonlocal
我正在学习编程语言的概念。
我在 python 语法中找到了术语“非本地”。
python中nonlocal是什么意思??
【问题讨论】:
标签: programming-languages python-nonlocal
来自documentation关于非本地语句:
nonlocal 语句导致列出的标识符引用 以前在最近的封闭范围内绑定变量。这是 很重要,因为绑定的默认行为是搜索 首先是本地命名空间。该语句允许封装的代码 重新绑定全局范围之外的变量 (模块)范围。
在非本地语句中列出的名称,与在非本地语句中列出的名称不同 全局语句,必须引用封闭中的预先存在的绑定 范围(不能在其中创建新绑定的范围 明确地确定)。
在 nonlocal 语句中列出的名称不得与 pre- 本地范围内的现有绑定
【讨论】:
非局部变量存在于嵌套循环中。使用关键字 nonlocal 并从最近的封闭循环中获取值。一个例子是:-
def outer():
x = "local"
def inner():
nonlocal x
x = "nonlocal"
print("inner:", x)
inner()
print("outer:", x)
由于 x 的值已被内部函数更改,因此两次输出都将是“非本地”的。
【讨论】: