无法访问Python全局变量(真的很奇怪)
下面是事情的简化版
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'] 的返回值。我也试过在 init 和 test 函数里加上 global x,但还是没用。我完全搞不懂发生了什么
谁能帮帮我?
1 个回答
4
Python中的全局变量其实并不是完全全局的。每个模块都有自己的一套全局变量,所以你在一个模块里存的变量在另一个模块里是看不到的。
如果你想在另一个模块中存储一个值,只需要直接在那个模块的对象上设置属性就可以了:
import math
def store(x):
math.x = x