变量作用域指变量可被访问的范围,Python分为局部和全局作用域;局部变量在函数内创建、仅函数内有效,全局变量在模块顶层定义、模块内可读,修改需global声明。

什么是变量作用域
变量作用域指的是变量在程序中可以被访问和使用的范围。Python依据定义位置,把变量划分为局部作用域和全局作用域。理解这个概念,能避免“NameError: name 'xxx' is not defined”这类常见错误,也能防止意外修改变量带来的逻辑问题。
局部变量:函数内部的“私有空间”
在函数内部用赋值语句创建的变量,默认是局部变量,只在该函数体内有效,函数执行完后自动销毁。
- 即使和全局变量同名,函数内也优先使用局部变量,互不影响
- 局部变量无法在函数外部直接访问,比如
print(x)放在函数外会报错 - 递归调用时,每次调用都拥有独立的局部变量空间
全局变量:模块级别的“共享资源”
在函数外部、模块顶层定义的变量属于全局作用域,整个模块内(包括所有函数)都能读取它。但要注意:
- 函数内只读不改时,可直接使用全局变量,无需额外声明
- 函数内要修改全局变量,必须用
global关键字显式声明,否则Python会误认为你在创建新的局部变量 - 多个文件间不自动共享全局变量;每个.py文件有自己的全局作用域
如何安全地跨作用域操作变量
不建议频繁修改全局变量,更推荐通过参数传入、返回值传出的方式传递数据。若确实需要更新全局状态:
立即学习“Python免费学习笔记(深入)”;
- 写清楚注释说明为什么必须用
global - 对复杂状态,考虑用类封装,把变量作为实例属性管理
- 用
globals()或locals()检查当前作用域变量(仅调试用,生产环境慎用)










