0

因此,这是正在发生的事情的简化版本

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'] 的回报。我尝试将 global x 放入 init 和 test 函数中也无济于事。我不知道发生了什么事

有什么帮助吗?

4

1 回答 1

4

Python 的全局变量并不是真正的全局变量。每个模块都有自己的全局变量,因此您存储的变量在其他模块的全局变量中不可见。

要将值存储在另一个模块的命名空间中,只需直接在模块对象上设置属性:

import math

def store(x):
    math.x = x
于 2013-02-08T06:08:58.427 回答