在Python中跨多个模块使用和修改全局变量

时间:2015-09-08 17:55:16

标签: import scope global-variables global python-2.6

Python是我最新的语言(Python-2.6),我的背景是C / C ++。通常,我会创建一个全局变量,并能够在我的所有文件中修改和访问它。我试图在python中实现相同的功能。

基于这篇文章:Python - Visibility of global variables in imported modules我看到" Python中的Globals是模块的全局,而不是所有模块的#34;。我有多个依赖于用户输入的变量,必须由四个不同的模块和主代码访问和修改,这就是我试图在Python中使用全局(ish)变量的原因。

我有两个尝试来完成这项工作:

1)如果我在主代码中使用可修改的全局变量来粘贴代码,我会遇到"执行主模块两次"详见此处:http://python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html该程序可以正常工作,而不是执行两次。

2)如果我创建一个单独的模块并将变量放入一个函数中,我发现我的其他模块中有未定义的变量,我的代码会出错。从步骤到代码,我看到当变量可由moduleA访问/修改时,但是当moduleB和moduleC尝试使用它们时,一切都会中断,因为修改不会停留。

如何利用Python来满足我的需求?我相信我的问题在于尝试使用全局变量并导入全局变量

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我停止尝试在主代码中的多个模块中使用全局变量,并停止导入单个变量。我基本上最终在moduleB中放置了moduleA(单个函数)。我在moduleB中为我需要的函数创建了一个类。主代码和moduleC现在可以访问这些函数。

我仍然在moduleB的函数中使用全局变量。如果我使变量不是全局的,我会得到属性错误。