代码如下:
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
但我很好奇是否可以从函数中返回“全局”字典(该术语可能已关闭)。
答案 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的禅宗说:"简单比复杂更好。"