Ami*_*mit 0 python dictionary function
我正在编写一个构建字典的脚本,我观察到一种奇怪的行为.
我将在下面用一个小例子来描述它.
def test_f(parameter):
parameter.update({'watermelon':'22'})
return parameter
fruits = {'apple':20, 'orange': 35, 'guava': 12}
new_fruits = test_f(fruits)
Run Code Online (Sandbox Code Playgroud)
简而言之,我有一个字典,我传递给一个函数,test_f
.该函数将新字典附加到输入并返回它.我在一个名为的变量中捕获函数的输出new_fruits
.然而,这也改变了原始变量fruits
.
为什么原始变量会fruits
发生变化?我update
是以错误的方式使用该方法吗?
不,你正在使用它.
但列表,字典等是可变类型.即使您在本地范围内更改它们,它们也会更新.因为,python实际上是通过名称而不是值传递参数.
从这里了解更多.
解:
我建议你制作一本新的字典副本并将其作为函数的参数传递.使用copy.deepcopy
复制的字典.
更改您的函数调用如下:
import copy
fruits = {'apple':20, 'orange': 35, 'guava': 12}
new_fruits = test_f(copy.deepcopy(fruits))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
76 次 |
最近记录: |