我有一个python项目,其中有几个由.sh shell文件运行的脚本。脚本之间的全局变量
我有一个配置文件,它定义了跨脚本使用的字典。
config.py
name_dict = dict()
file1.py
from config import *
..
..
## I have that reads tries to load the dump file that will contain the json values.
name_dict = json.load(open(dict_file))
##This file - file1.py calls another function fun() in file2.py, iteratively 3/4 times.
..
file2.fun(args)
print "Length of dict in file1.py : %d " %len(name_dict) // Always Zero ??? Considers name_dict as local variable.
在文件2 - 全球keyword.fun file2.py,我已经定义name_dict()使用和更新name_dict,最后我打印字典的长度,我发现它被更新。
def fun(args)
global name_dict
print "Length of dict file2.py(start): %d " %len(name_dict)
..
..
print "Length of dict file2.py(end): %d " %len(name_dict)
从文件2,控制返回后,每到这时,在file1.py我打印name_dict的价值,它是零。但是,在下一次调用fun() - > print语句时仍然会打印出name_dict()的全局值(长度)
但是在file1.py中它总是为零。我的猜测是它被视为一个局部变量。我该如何解决 ?
因此,这是否意味着每次使用name_dict(在file1或file2中)我都应该使用config.name_dict(使用它的名称空间)? – Learner
@学习者号码您可以使用'name_dict = config.name_dict'并使用'name_dict',但是当您执行应该传递给其他模块的分配时,您必须这样做。无论如何,我认为在模块之间使用这种模式非常罕见,所以您可能只需重构代码并避免这种情况。 – Bakuriu
另外,file1中的'from config import *'应该导入config.py中定义的所有变量(包括name_dict)吗?这就是我一直在想的。如我错了请纠正我。 – Learner