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')

これはうまくいきます。['何とか'] が返されます。グローバル x を init および test 関数に入れてみましたが、同様に役に立ちませんでした。何が起こっているのかわかりません

何か助けはありますか?

4

1 に答える 1

4

Python のグローバルは実際にはグローバルではありません。各モジュールには独自のグローバルがあるため、保存している変数は他のモジュールのグローバルには表示されません。

別のモジュールの名前空間に値を格納するには、モジュール オブジェクトに属性を直接設定します。

import math

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