python的global vs nonlocal
global 与 nonlocal 的区别总结
| 特性 | global | nonlocal |
|---|---|---|
| 作用域层级 | 全局作用域(模块级别) | 外层嵌套作用域(函数内部的函数) |
| 适用场景 | 修改全局变量 | 修改外层函数的变量(闭包) |
| 是否影响局部变量 | 不影响局部变量,但会修改全局变量 | 不影响全局变量,但会修改外层函数的变量 |
| 能否用于不存在的变量 | 可以(会创建新变量) | 不能(必须已经存在) |
| 能否用于内置变量 | 可以(不推荐) | 不能 |
| 是否支持嵌套作用域 | 否 | 是 |
x = 100 # 全局变量
def outer():
x = 200 # 外层函数变量
def inner():
global x # 修改全局变量
x += 10
print("inner:", x)
def inner2():
nonlocal x # 修改外层函数变量
x += 10
print("inner2:", x)
inner() # 修改全局 x
inner2() # 修改 outer 的 x
outer()
print("global x:", x) # 输出: 110


浙公网安备 33010602011771号