Python全局列表未更新

时间:2015-11-20 10:41:13

标签: python list global-variables

我有一个全局列表,它似乎没有更新它声明的文件中的列表。我已经看到了几个与我的问题相似的问题,我可以使用它来解决我的问题。但我试图理解为什么它在我的情况下不起作用。

HelloWorld.py

import TestFile

store_val = ["10", "20"]

def main():
    store_val.append("30")
    print store_val
    TestFile.list_val()

if __name__ == '__main__':
    main()

TestFile.py

import HelloWorld

def list_val():
    HelloWorld.store_val.append("40")
    print "Store Value : ", HelloWorld.store_val
    HelloWorld.store_val.append("60")
    print "Updated Value : ", HelloWorld.store_val

我看到的问题是我能够在TestFile.py的列表中附加一个值,但似乎无法在HelloWorld.py中向列表中添加值,即使它已在那里声明。解决此问题的最佳方法是什么,以便我可以从HelloWorld.py附加值

运行HelloWorld的结果

['10', '20', '30']
Store Value :  ['10', '20', '40']
Updated Value :  ['10', '20', '40', '60']

1 个答案:

答案 0 :(得分:1)

应该是这种方式。在您的情况下,只有store_val列表和main函数从TestFile.py中的HelloWorld导入,但主函数不在TestFile.py中运行

HelloWorld.py

import TestFile

store_val = ["10", "20"]

def main(n=1):
    store_val.append("30")
    print store_val
    if n>0:
        TestFile.list_val(n)

if __name__ == '__main__':
    main()

TestFile.py 导入HelloWorld

def list_val(n):
    if (n>=0):
        HelloWorld.main(n-1)

    HelloWorld.store_val.append("40")
    print "Store Value : ", HelloWorld.store_val
    HelloWorld.store_val.append("60")
    print "Updated Value : ", HelloWorld.store_val

if __name__ == '__main__':
    list_val()

运行代码:

python HelloWorld.py
['10', '20', '30']
['10', '20', '30']
Store Value :  ['10', '20', '30', '40']
Updated Value :  ['10', '20', '30', '40', '60']