理解 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中文网其他相关文章!