創建一個獨立的文件,你的所有全局值
#globals.py
class MyGlobals(object):
data = [[]] # global data
#c.py
from globals import MyGlobals
def work1(list):
MyGlobals.data.append(list)
def work3():
print (MyGlobals.data)
#b.py
from globals import MyGlobals
import c
input = [[1, 3, 4], [2, 4, 4], [3, 4, 5]]
def work2():
for each in input:
C.work1(each) # call work1
#a.py
from globals import MyGlobals
import c
def work4():
c.work3() # call work3
if __name__ == "__main__":
work4();
輸出
sh-4.3$ python a.py
[[]]
sh-4.3$
如果你現在要更新您的全局值,你可以調用內部
#a.py
from globals import MyGlobals
import c
import b
def work4():
c.work3() # call work3
if __name__ == "__main__":
b.work2()
work4()
輸出在文件b.py WORK2()函數
sh-4.3$ python a.py
[[], [1, 3, 4], [2, 4, 4], [3, 4, 5]]
有一個空的列表中輸出,因爲我不知道你想怎麼存儲它們,因爲有你追加到全球數據,即數據的現有空列表= [[]]
使其按照您的要求工作。將全局list
放入一個文件中,並將該文件導入到您要使用它的每個其他模塊/文件中。
#a.py
data = [[]] # global data
#b.py
import a
def work1(list):
a.data.append(list)
def work3():
print (a.data)
#c.py
import a
import b
input = [[1, 3, 4], [2, 4, 4], [3, 4, 5]]
def work2():
for each in input:
b.work1(each) # call work1
#main.py
import a
import b
import c
def work4():
b.work3() # call work3
if __name__ == "__main__":
c.work2()
work4()
輸出
sh-4.3$ python main.py
[[], [1, 3, 4], [2, 4, 4], [3, 4, 5]]
sh-4.3$
我不能夠正確地遵循。你的預期輸出是什麼,你會得到什麼?因爲只調用work3()將總是返回空。從A導入work3將複製c.py中的work3。 – Cyclotron3x3
有一個調用work2()和work4()的主函數。當然,還有其他一些人在這些職能上工作,但是,我沒有描述細節。重點是全球數據沒有向其他模塊顯示一些更新的內容。 (它在模塊中顯示正確的更新數據,我的意思是聲明全局變量的地方) –