首页 > 后端开发 > Python教程 > Python 的'nonlocal”关键字在修改变量时与'global”有何不同?

Python 的'nonlocal”关键字在修改变量时与'global”有何不同?

Linda Hamilton
发布: 2024-12-21 04:59:13
原创
994 人浏览过

How Does Python's `nonlocal` Keyword Differ from `global` in Modifying Variables?

理解 Python 3 中的“非本地”

与传统语言不同,Python 允许嵌套函数访问在其外部作用域中定义的变量。但是,访问嵌套函数中未声明的变量(即非局部变量)可能会导致意外行为。

“非局部”关键字

中Python 3 中,“nonlocal”关键字允许您修改嵌套函数内外部作用域中声明的变量。通过使用“nonlocal”,您可以声明您正在修改的变量是非本地的,并且属于外部作用域。

“nonlocal”如何工作

考虑以下代码不使用"nonlocal":

输出:

在此示例中,内部函数中的变量 x 遮蔽了外部函数的变量 x,导致值 2 被分配给x 在内部函数中。外部函数的变量 x 不受影响。

使用 "nonlocal"

要从内部函数修改外部函数的变量 x,我们可以使用 "nonlocal" 作为如下:

输出:

在这种情况下,“nonlocal”关键字允许内部函数访问和修改外部函数的变量 x。结果,外部函数中 x 的值更改为 2。

与“global”的比较

与“nonlocal”不同,“global”关键字指的是属于全局范围的变量。使用“global”会将内部函数中的变量绑定到全局变量,无论是否存在其他同名局部变量:

输出:

因此,当您想要修改在外部作用域中声明的变量时,应使用“nonlocal”,而从全局作用域访问变量时应使用“global”。

以上是Python 的'nonlocal”关键字在修改变量时与'global”有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板