修改函数内的字典

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()
另外,如何更新函数内部的字典,以便更改反映在函数外部?

sro*_*and 4

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 建议的那样,实现此目的的最佳方法是简单地从函数返回新字典并分配返回值。