Python 没有真正的全局变量, 在 Java 和 C++ 中, 全局变量则是程序级别的, 站在它们的角度, 那么 python 就是没有全局变量, 而在 python 的角度, 是有全局变量, python 提供 global 关键字, 可以修改全局变量, 在 python 中的全局变量只是针对当前 python 文件 / 模块所定义的, python 文件就是一个模块, 独立的命名空间, 模块内定义的变量就只属于该命名空间, so,python 没有真正的全局变量, 全局变量也只是文件级别.
所以 Python 的全局变量是相对而言的
例子:
test.py
a = 1
t1.py
- import sys
- import test # 导入 test 模块
- a = 1 # 声明一个变量
- def func1():
- global a # 引用当前命名空间的全局变量
- a += 1
- def func2():
- test.a += 1 # 引用 test 模块命名空间的变量
- def func3():
- # print(sys.modules) # 记录当前文件导入的所有模块
- module = sys.modules['test'] # 二次引用已导入的 test 模块
- module.a += 1 # 引用 test 模块命名空间的变量
- func1()
- func2()
- func3()
- print(a) # 结果: 2
- print(test.a) # 结果: 3
来源: http://www.bubuko.com/infodetail-3156880.html