【问题标题】:Python: unusual behaviour dictionary update methodPython:异常行为字典更新方法
【发布时间】:2017-04-23 05:52:44
【问题描述】:

我正在编写一个构建字典的脚本,但我观察到一个奇怪的行为。

下面我会用一个小例子来描述。

def test_f(parameter):
    parameter.update({'watermelon':'22'})
    return parameter

fruits = {'apple':20, 'orange': 35, 'guava': 12}
new_fruits = test_f(fruits)

简而言之,我有一本字典,我将其传递给函数test_f。该函数将一个新字典附加到输入并返回它。我在一个名为new_fruits 的变量中捕获函数的输出。然而,这也改变了原始变量 fruits

为什么原来的变量fruits会发生变化? 我是否以不正确的方式使用update 方法?

【问题讨论】:

    标签: python function dictionary


    【解决方案1】:

    不,你用对了。

    但列表、字典等是可变类型。即使您在本地范围内更改它们,它们也会得到更新。那是因为,python 实际上是按名称而不是按值传递参数。

    阅读更多来自here

    解决方案:

    我会建议你制作一个新的字典副本并将其作为函数的参数传递。使用copy.deepcopy 复制字典。

    改变你的函数调用如下:

    import copy 
    
    fruits = {'apple':20, 'orange': 35, 'guava': 12}
    new_fruits = test_f(copy.deepcopy(fruits))
    

    【讨论】:

    • 很高兴知道它有帮助。您可以在我的答案左上方的绿色标记处打勾,将其标记为已接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2014-12-26
    • 2011-05-08
    • 2019-05-20
    • 2019-05-04
    • 2021-12-30
    相关资源
    最近更新 更多