所以这里是正在发生的事情的简化版本
x = []
def test():
return x
def init():
x.append('blah')
问题:init()函数在单独的文件中运行,并正确更新全局变量x。但是在运行test()函数之后,我总是得到[]而不是['blah']的值。但这里变得奇怪。如果我要运行此函数(whatever_file.py是存储这些函数的名称):
x = []
def test():
from whatever_file import x
return x
def init():
x.append('blah')
这很好用。我会得到['blah']返回。我已经尝试将全局x放在init和test函数中,但也没有用。我不知道发生了什么
任何帮助?
答案 0 :(得分:4)
Python的全局变量并不是全局的。每个模块都有自己的全局变量,因此您存储的变量在其他模块的全局变量中不可见。
要将值存储在另一个模块的命名空间中,只需直接在模块对象上设置该属性:
import math
def store(x):
math.x = x