2026-10-23 21:23:34
在Python中,global关键字用于在函数内部声明变量为全局变量,从而允许函数直接修改模块级全局变量而非创建局部副本。
核心作用global:指向模块级全局变量,跳过所有中间局部作用域。
nonlocal:指向最近的非全局封闭作用域(如嵌套函数中外层函数的变量)。
global用于修改全局状态(如配置参数)。
nonlocal用于修改闭包中的外层函数变量。
global_x = 10def outer(): outer_x = 20 def inner(): global global_x # 修改全局变量 nonlocal outer_x # 修改外层函数变量 global_x = 100 outer_x = 200 inner() print(outer_x) # 输出200(被nonlocal修改)outer()print(global_x) # 输出100(被global修改)全局变量可在任意位置被修改,导致追踪变量状态困难,增加调试成本。
函数行为依赖全局状态,而非仅输入参数,导致输出不确定,难以测试。
多个模块共享同一全局变量时,修改可能意外影响其他模块,降低代码复用性。
多线程同时修改全局变量可能导致竞态条件,需额外同步机制(如锁)。