我来自this thread这是有帮助的,但还不够。我的情况略有不同,但最重要的是我的情况:我重构了1000多行的代码(在一个文件中),所以改变某些东西的名称很快就会变得很痛苦。
所以我将文件拆分为3:
我会简化这里的内容。
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}}行。
那么最简单/最简单的方法是什么?
感谢您的帮助
答案 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'