创建由方法的参数命名的全局变量

时间:2014-06-23 04:28:08

标签: python-3.x methods dictionary global

我正在研究Python3.2中的一个项目,因为我需要创建一个字典并自动分配从文本文件中读取的键和值。 大部分工作已经完成:

def loadDict(file,dictname):
    with open(file,"r") as dict_file:
            for i in range(sum(1 for line in open(file))):
                    line = dict_file.readline()
                    part0,part1 = "", ""
                    part0 = line.split("\:/")[0][1:(len(line.split("\:/")[0])-1)]
                    part1 = line.split("\:/")[1][1:(len(line.split("\:/")[1])-1)]
                    dictname[part0] = part1
            dict_file.close()

我可以通过创建字典并分别调用函数来使用它:

test_dictinary = {}
loadDict("my_file","test_dictionary")
print(test_dictionary)

获得适当的结果。对我来说问题是:我需要在调用方法之前创建一个空字典。

如果有办法在该方法中自行创建一个全局字典,那我就更聪明了。那么

loadDict("my_file","test_dictionary")

将自动为我创建字典“test_dictionary”,我可以在其他方法中使用。 我也用fromdict尝试了同样的结果。 搜索功能在这里和谷歌没有给我任何解决方案(除了起源不起作用)。

编辑[社区解决方案]:

def loadDict(file,dictname):
helpdict = {}
with open(file,"r") as dict_file:
        for line in dict_file:
                part0 = line.split("\:/")[0][1:(len(line.split("\:/")[0])-1)]
                part1 = line.split("\:/")[1][1:(len(line.split("\:/")[1])-1)]
                helpdict[part0] = part1
        globals()[dictname] = helpdict

1 个答案:

答案 0 :(得分:0)

这是一种非常糟糕的编码方式,为什么不直接返回创建的字典?如果你真的想以编程方式创建全局变量,我想你可以使用globals函数:

def fun():
  globals()['a'] = 1

>> fun() 
>> a
1