导入3个文件的全局变量

时间:2016-11-14 15:08:02

标签: python global-variables python-import

我来自this thread这是有帮助的,但还不够。我的情况略有不同,但最重要的是我的情况:我重构了1000多行的代码(在一个文件中),所以改变某些东西的名称很快就会变得很痛苦。

所以我将文件拆分为3:

  • settings.py,其中我定义了所有全局变量(有 很多 - 主要是布尔和字符串)
  • 同步。可以改变 他们的价值观
  • groups.py也可以更改它们

我会简化这里的内容。

settings.py:

MY_VAR = "plane"

synchro.py:

from settings import *
import groups

def main():
  global MY_VAR
  MY_VAR = "boat"
  groups.update()

groups.py:

from settings import *

def update():
  print MY_VAR # will print "plane" instead of "boat"

我还尝试编写import settings而不是from settings import *,但在这种情况下,python告诉我global settings.MY_VAR是一个错误,如果删除了settings.MY_VAR,它就无法识别global {{1}}行。

那么最简单/最简单的方法是什么?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

你应该像下面这样做,它不建议做from settings import *,它会导致命名空间污染,并使以后的调试更难。 我通常只在同一个文件中使用全局,尽管我尽量减少全局使用

settings.py

MY_VAR = "plane"

synchro.py:

import settings
import groups

def main():
  # no need to declare global here, access trough settings namespace instead
  settings.MY_VAR = "boat"
  groups.update()

groups.py:

import settings

def update():
  print settings.MY_VAR # will print "plane" at first, after synchro main, MY_VAR should carry 'boat'