关于全局变量和局部变量,这篇文章写的很不错,可以参考:Python3 命名空间和作用域
官方文档 编程常见问题 里也有 Python 的局部变量和全局变量有哪些规则? 条目可以参考:
函数内部只作引用的 Python 变量隐式视为全局变量。如果在函数内部任何位置为变量赋值,则除非明确声明为全局变量,否则均将其视为局部变量。
起初尽管有点令人惊讶,不过考虑片刻即可释然。一方面,已分配的变量要求加上 global
可以防止意外的副作用发生。另一方面,如果所有全局引用都要加上 global
,那处处都得用上 global
了。那么每次对内置函数或导入模块中的组件进行引用时,都得声明为全局变量。这种杂乱会破坏 global
声明用于警示副作用的有效性。