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

时间:2013-02-08 05:52:45

标签: python global

所以这里是正在发生的事情的简化版本

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函数中,但也没有用。我不知道发生了什么

任何帮助?

1 个答案:

答案 0 :(得分:4)

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

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

import math

def store(x):
    math.x = x