Python字典中的数值在没有更新的情况下发生了改变。
Python字典中的数值在没有更新的情况下发生了改变。
这个问题已经有答案了:
我尝试这个简单的代码:
def chage_value(dict, key): dict[key] = 123 return dict my_dict = {'a': 1, 'b': 2} print(my_dict) chage_value(my_dict, 'a') print(my_dict)
这给了我输出:
{'a': 1, 'b': 2} {'a': 123, 'b': 2}
为什么\'a\'的值会改变?我没有做像my_dict = chage_value(my_dict,\'a\')这样的事情。
admin 更改状态以发布 2023年5月23日
你是因为修改了参数才出现这种情况的,比如看看这个
def add_to(num, target=[]): target.append(num) return target add_to(1) # Output: [1] add_to(2) # Output: [1, 2] add_to(3) # Output: [1, 2, 3]
你可能期望每次调用 add_to
时都会创建一个新的列表,但事实并非如此。你修改了参数,如果不想修改参数,就要避免这种情况
from copy import deepcopy def foo(some_var): some_var_ = deepcopy(some_var) ... return some_var_
这里你是修改了 some_var
的副本而不是原始版本。
你可以在这里查看其他可变东西:https://book.pythontips.com/en/latest/mutation.html#mutation