必须用 global 关键字声明才能在函数内修改全局变量,因 Python 遵循“赋值即定义”规则,默认将函数内赋值的变量视为局部变量;只读无需 global,声明须在赋值前,多变量可一次声明,但应优先考虑参数传递或类封装等更优设计。

在 Python 中,如果想在函数内部修改全局变量的值,必须用 global 关键字显式声明该变量为全局作用域变量;否则,Python 默认会在函数内创建同名的局部变量,不会影响外部的全局变量。
为什么需要 global?
Python 遵循“赋值即定义”的规则。只要在函数内对一个变量做了赋值(比如 x = 10),Python 就认为这个变量是局部的,除非提前用 global 声明。即使同名变量已在外部定义为全局,不加 global 也会报 UnboundLocalError 或静默创建局部变量。
正确使用 global 的写法
在函数开头用 global 声明要修改的变量名,之后就可以安全读写:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
x = 100
<p>def modify_x():
global x
print(f"修改前: {x}") # 可读
x = 200 # 可写,影响全局
print(f"修改后: {x}")</p><p>modify_x()
print(f"全局 x 现在是: {x}") # 输出 200常见误区与注意事项
- 只读不写时不需要
global:访问全局变量的值(如print(x))无需声明 -
global必须在首次赋值前声明:放在赋值语句之后会报语法错误 - 不能在声明前引用未赋值的全局变量:例如
global x; y = x + 1是允许的,但若x未在全局定义,运行时仍会报错 - 多个变量可一次声明:
global a, b, c
替代方案:考虑是否真需要 global
频繁依赖 global 往往说明设计可优化。更推荐的做法包括:
立即学习“Python免费学习笔记(深入)”;
- 把变量作为参数传入函数,返回新值再重新赋值
- 用类封装状态,通过实例属性管理数据
- 使用模块级常量(只读)或配置对象

















