gpt4 book ai didi

python - Python 是否会在赋值时复制对象?

转载 作者:IT老高 更新时间:2023-10-28 21:33:35 25 4
gpt4 key购买 nike

当我尝试这段代码时:

dict_a = dict_b = dict_c = {}
dict_c['hello'] = 'goodbye'

print(dict_a)
print(dict_b)
print(dict_c)

我希望它只会初始化 dict_adict_bdict_c 字典,然后在 dict_c< 中分配一个键,导致

{}
{}
{'hello': 'goodbye'}

但它似乎有一种复制效果:

{'hello': 'goodbye'}
{'hello': 'goodbye'}
{'hello': 'goodbye'}

为什么?

最佳答案

这是因为在 Python 中,变量(名称)只是对单个对象的引用。当您分配 dict_a = dict_b ,您实际上是在从 dict_b 复制内存地址(或指针,如果您愿意的话)至dict_a .该词典还有一个实例。

要获得所需的行为,请使用 dict.copy方法,或使用 copy.deepcopy如果您的字典可能有嵌套字典或其他嵌套对象。

>>> a = {1:2}
>>> b = a.copy()
>>> b
{1: 2}
>>> b[3] = 4
>>> a
{1: 2}
>>> b
{1: 2, 3: 4}
>>>

关于python - Python 是否会在赋值时复制对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2438938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com