Skip to main content
 首页 » 编程设计

python之全局变量无法传输值python

2025年05月04日12落叶

我是 python 的新手并尝试使用全局变量,我可以通过中间文件 在两个文件 test1.py 和 test2.py 之间传输值全局变量.py 。我能够将这些从我在几个 stackoverflow 问题和演示中阅读的内容放在一起。但我不确定是否正在写它,因为它不起作用。请告诉我哪里出错了

全局变量.py

    key_gen = [] 
    def init(): 
         global key_gen 

测试1.py

    import global_var 
    global_var.init() 
    global_var.key_gen = [1,2,3] 

测试2.py

    import global_var 
    k = global_var.key_gen 
    print k 

但是,打印并没有给出 [1,2,3]。相反,它给出了 [ ]。你能告诉我怎样才能做到这一点吗?提前致谢

编辑:如果我删除这条语句

    key_gen = [] 

从 global_var.py 再次运行相同的代码,我在执行 test1.py 时没有收到任何错误,但是当我运行 test2.py 我收到以下错误

   Traceback (most recent call last): 
   File "test2.py", line 3, in <module> 
   k = global_var.key_gen 
   AttributeError: 'module' object has no attribute 'key_gen' 

我无法完全理解为什么会这样。

请您参考如下方法:

您误解了模块全局变量的生命周期。在 Python 解释器中更改状态不会持久保存到磁盘。从脚本更改 global_var.key_gen 不会导致在解释器再次退出时保存该更改。

您必须明确地将更改写入磁盘。那里有很多选项可供选择;您可以使用 json.dump() 将列表写入磁盘(首先打开一个文件对象),或者你可以使用 shelve module创建一个字典,其内容会自动保存到磁盘。