我是 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创建一个字典,其内容会自动保存到磁盘。
