我在修改Python中不同文件之间的全局变量时遇到了问题。例如:
File1.py:
x = 5
File2.py:
from File1 import *
def updateX():
global x
x += 1
main.py:
from File2 import *
updateX()
print x #prints 5
答案 0 :(得分:2)
这里有几点需要注意。
首先,global
不是全球性的。真正全局的东西,比如内置函数,存储在{3}模块中,或{3}}存储在Python 3中。__builtin__
表示模块级。
其次,当你builtins
时,你得到的新变量与你global
'模块中的变量名称相同,引用相同的对象。这意味着如果您随后在一个模块中重新分配变量,则另一个模块不会看到更改。另一方面,改变一个可变对象是两个模块都看到的变化。
这意味着在import *
的第一行之后:
import *
main.py
,from File2 import *
和File1
(主脚本运行的模块)都有单独的File2
个变量引用相同的__main__
对象。 x
和5
也有File2
个变量引用__main__
函数。
第二行之后:
updateX
只有updateX
的{{1}}变量会重新分配给updateX()
。 (该函数记录了它的定义位置,因此它会更新File2
的{{1}}而不是x
。)
第三行:
6
打印File2
的{{1}},仍为5。