为什么字典内部的值在传入函数后会发生改变?
为啥字典会增加一个元素a呢?defdict_key_lencode(param_dict_in):
param_dict = param_dict_in
param_dict['a']=1
param_dict = dict(sorted(param_dict.items()))
StrAe = "&".join()
return StrAe
param_dict = {'b':1,'c':2}
param_dict_temp = param_dict
s = dict_key_lencode(param_dict_temp)
print(param_dict)
运行结果:
{'b': 1, 'c': 2, 'a': 1}
这是因为在函数中,参数param_dict_in和param_dict都指向了同一个字典对象。在函数中对param_dict的修改也会影响到param_dict_in所指向的字典对象。因此,在函数中添加了一个键为a ,值为1的元素,导致原始字典也被修改了。
如果想要避免这种情况,可以在函数中创建一个新的字典对象,将原始字典的键值对复制到新的字典对象中。例如可以使用param_dict.copy()或者dict(param_dict)来创建一个新的字典对象。 isdkz 发表于 2023-5-24 23:44
这是因为在函数中,参数param_dict_in和param_dict都指向了同一个字典对象。在函数中对param_dic ...
defdict_key_lencode(param_dict_in):
param_dict = param_dict_in.copy()
param_dict['a']=1
param_dict = dict(sorted(param_dict.items()))
StrAe = "&".join()
return StrAe
param_dict = {'b':1,'c':2}
param_dict_temp = param_dict
s = dict_key_lencode(param_dict_temp)
print(param_dict)
{'b': 1, 'c': 2}
验证成功
页:
[1]