理解“nonlocal”在 Python 3 中的作用
在 Python 3 中,“nonlocal”在访问定义在 Python 中的变量中起着至关重要的作用。一个封闭范围,但在当前范围之外。与引用全局作用域中的变量的“global”不同,“nonlocal”允许您与父函数作用域中的变量进行交互。
在不使用“nonlocal”的情况下考虑此示例:
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
输出:
inner: 2 outer: 1 global: 0
我们可以看到,内部函数中的变量“x”被赋值为局部值2,而外部函数中的变量“x”保持为1。全局变量“x”保留其初始值0。
现在,让我们使用“nonlocal”重写这段代码:
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
输出:
inner: 2 outer: 2 global: 0
使用“nonlocal”,内部函数中的变量“x”现在绑定到该变量外部函数中的“x”。因此,当内部函数中修改“x”时,也会影响其在外部函数中的值。全局变量“x”保持不变。
相反,“global”会将内部函数中的变量“x”绑定到全局范围内的变量:
x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
输出:
inner: 2 outer: 1 global: 2
理解“非局部”和“全局”之间的细微差别对于有效管理 Python 代码中的变量至关重要。
以上是Python 的'nonlocal”关键字与作用域管理中的'global”有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!