如何通过 global 关键字在 Python 函数中改变全局变量值?
- 内容介绍
- 文章标签
- 相关推荐
本文共计525个文字,预计阅读时间需要3分钟。
在Python中,若想在函数内部修改全局变量的值,必须使用global关键字显式声明该变量为全局变量。否则,Python会默认创建一个同名的局部变量,而不影响外部的全局变量。例如:
为什么需要 global?
Python 遵循“赋值即定义”的规则。只要在函数内对一个变量做了赋值(比如 x = 10),Python 就认为这个变量是局部的,除非提前用 global 声明。即使同名变量已在外部定义为全局,不加 global 也会报 UnboundLocalError 或静默创建局部变量。
正确使用 global 的写法
在函数开头用 global 声明要修改的变量名,之后就可以安全读写:
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免费学习笔记(深入)”;
- 把变量作为参数传入函数,返回新值再重新赋值
- 用类封装状态,通过实例属性管理数据
- 使用模块级常量(只读)或配置对象
本文共计525个文字,预计阅读时间需要3分钟。
在Python中,若想在函数内部修改全局变量的值,必须使用global关键字显式声明该变量为全局变量。否则,Python会默认创建一个同名的局部变量,而不影响外部的全局变量。例如:
为什么需要 global?
Python 遵循“赋值即定义”的规则。只要在函数内对一个变量做了赋值(比如 x = 10),Python 就认为这个变量是局部的,除非提前用 global 声明。即使同名变量已在外部定义为全局,不加 global 也会报 UnboundLocalError 或静默创建局部变量。
正确使用 global 的写法
在函数开头用 global 声明要修改的变量名,之后就可以安全读写:
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免费学习笔记(深入)”;
- 把变量作为参数传入函数,返回新值再重新赋值
- 用类封装状态,通过实例属性管理数据
- 使用模块级常量(只读)或配置对象

