Python:异常行为字典更新方法
我正在写一本字典的脚本,我观察到一种奇怪的行为 下面我将用一个小例子来描述它Python:异常行为字典更新方法,python,function,dictionary,Python,Function,Dictionary,我正在写一本字典的脚本,我观察到一种奇怪的行为 下面我将用一个小例子来描述它 def test_f(parameter): parameter.update({'watermelon':'22'}) return parameter fruits = {'apple':20, 'orange': 35, 'guava': 12} new_fruits = test_f(fruits) 简而言之,我有一个字典,我把它传递给一个函数,test\u f。该函数向输入追加一个新字典并
def test_f(parameter):
parameter.update({'watermelon':'22'})
return parameter
fruits = {'apple':20, 'orange': 35, 'guava': 12}
new_fruits = test_f(fruits)
简而言之,我有一个字典,我把它传递给一个函数,test\u f
。该函数向输入追加一个新字典并返回它。我在一个名为new\u fruits
的变量中捕获函数的输出。但是,这也会更改原始变量fruits
为什么原始变量fruits
会更改?
我是否以错误的方式使用了
update
方法?不,您使用的方法是正确的
但是列表、字典等都是可变类型。即使您在本地范围内更改它们,它们也会得到更新。这是因为python实际上是按名称传递参数,而不是按值传递参数
阅读更多来自
解决方案:
我建议您制作一个新的字典副本,并将其作为函数的参数传递。使用copy.deepcopy
复制字典
更改函数调用,如下所示:
import copy
fruits = {'apple':20, 'orange': 35, 'guava': 12}
new_fruits = test_f(copy.deepcopy(fruits))
不,你用对了 但是列表、字典等都是可变类型。即使您在本地范围内更改它们,它们也会得到更新。这是因为python实际上是按名称传递参数,而不是按值传递参数 阅读更多来自 解决方案: 我建议您制作一个新的字典副本,并将其作为函数的参数传递。使用
copy.deepcopy
复制字典
更改函数调用,如下所示:
import copy
fruits = {'apple':20, 'orange': 35, 'guava': 12}
new_fruits = test_f(copy.deepcopy(fruits))
很高兴知道这有帮助。你可以勾选我答案左上方的绿色标记,将其标记为已接受。很高兴知道这有帮助。你可以勾选我答案左上方的绿色标记,将其标记为已接受。