无法访问Python全局变量(真的很奇怪)

0 投票
1 回答
2180 浏览
提问于 2025-04-17 15:12

下面是事情的简化版

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

撰写回答