Anm*_*ggi 7 python dictionary function object python-3.x
我有以下代码:
def modify_dict(my_dict):
my_dict = {'b': 2}
print(my_dict)
def main():
my_dict = {'a': 1}
modify_dict(my_dict)
print(my_dict)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
它的输出是:
{'b': 2}
{'a': 1}
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么对函数内部字典所做的更改没有反映在函数中main()?
另外,如何更新函数内部的字典,以便更改反映在函数外部?
my_dict的参数是modify_dict函数的局部变量。它包含对字典的引用,但它本身只是一个局部变量。如果你进入并修改它指向的字典,那就行了。例如:
def modify_dict(my_dict):
my_dict['b'] = 2
print(my_dict)
Run Code Online (Sandbox Code Playgroud)
将添加到您的字典中。实际上,您只需将一个新字典分配给函数中名为 my_dict 的局部变量即可。
正如@vmonteco 建议的那样,实现此目的的最佳方法是简单地从函数返回新字典并分配返回值。