Python:创建一个在外部世界可见的函数中创建的字典

时间:2016-05-03 16:42:57

标签: python function python-3.x dictionary

代码如下:

def create_dict():
  my_dict = {}
  return my_dict

create_dict()
print (my_dict)

我得到了:

NameError: name 'my_dict' is not defined

如果我像这样分配返回的字典:

my_dict = create_dict()

而不是create_dict()行然后它可以工作,但是这个脚本将被多次调用,所以我不希望每次调用它时都会覆盖my_dict。我想要做的是在开头调用函数creat_dict()一次创建字典,然后按我认为合适的方式添加/删除内容。如果我继续调用脚本,那么my_dict将永远被一个空字典覆盖。

我可以这样做:

if my_dict exists: #This bit is pseudo code
  my_dict = {}
else:
  pass

但我很好奇是否可以从函数中返回“全局”字典(该术语可能已关闭)。

3 个答案:

答案 0 :(得分:2)

只需将global放在变量前面,并有条件地实例化它。

def create_dict():
  global my_dict
  if 'my_dict' not in globals():
    my_dict = {}

create_dict()
print (my_dict)

答案 1 :(得分:1)

我不认为在这种情况下建议使用全局变量是好的。

您需要做的是将my_dict = create_dict()行放在您继续调用脚本的脚本之外,并在开头放置一次,在其他地方放置它你继续调用你的脚本

答案 2 :(得分:0)

好吧,您可以使用global语句实现此行为,例如:

8.0

要检查全局范围内是否存在def create_dict(): global my_dict my_dict = {} 并避免在函数体内重新分配,您必须执行以下操作:

my_dict

这里需要注意一点,最好保留函数def create_dict(): if not "my_dict" in globals(): global my_dict my_dict = {} 。换句话说,在函数内部分配的全局变量可能会使您的程序维护更加困难。我不会在这里苛刻并说不惜一切代价避免它们,但我宁愿说,只有当你认为它们真的有必要时才使用它们。 Python的禅宗说:"简单比复杂更好。"