非局部变量和全局变量有啥区别?

Posted

技术标签:

【中文标题】非局部变量和全局变量有啥区别?【英文标题】:What is the difference between non local variable and global variable?非局部变量和全局变量有什么区别? 【发布时间】:2016-01-17 14:44:55 【问题描述】:

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

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

python中nonlocal是什么意思??

【问题讨论】:

见smallsurething.com/a-quick-guide-to-nonlocal-in-python-3 【参考方案1】:

来自documentation关于非本地语句:

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

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

在 nonlocal 语句中列出的名称不得与 pre- 本地范围内的现有绑定

【讨论】:

【参考方案2】:

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

def outer():
    x = "local"

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

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

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

【讨论】:

以上是关于非局部变量和全局变量有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

全局变量和局部变量区别存储重名

static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

java之static变量与全局局部变量的区别

本地 和 实例 变量之间有啥区别

全局变量和局部变量的区别

python局部变量全局变量,globalnolocal的区别