python更新全局变量

金浩

它是Python的一组简短脚本。但是,我在更新全局变量时遇到了问题。

# A.py

data = [[]]  # global data

def work1(list):
    data.append(list)

def work3():
    print (data)


# B.py
from A import work1

def work2():
    for each in input:
        work1(each)   # call work1


# C.py
from A import work3

def work4():
    work3()   # call work3

“数据”是一个包含长句子的列表的列表。如果没有“ work2”,则不会调用“ work4”。

但是,在“ work3”中,“数据”始终为空,而不是更新为“ [[]]”,该如何解决?(python的版本是3.4.4)

回旋加速器3x3

为您的所有全局值创建一个单独的文件

#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$ 

如果现在要更新全局值,则可以在文件b.py中调用work2()函数

#a.py 

from globals import MyGlobals
import c
import b

def work4():
    c.work3()   # call work3

if __name__ == "__main__":
    b.work2()
    work4()

输出

sh-4.3$ python a.py                                                                                                                                                                                                                                    
[[], [1, 3, 4], [2, 4, 4], [3, 4, 5]]                                                                                                                                                                                                                  

输出中有一个空列表,因为我不确定您要如何存储它们,因为有一个现有的空列表要添加到全局数据中,即data = [[]]

为了使其按照您的要求工作。将您的全局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$                                                                                                                                                                                                           

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章