gpt4 book ai didi

python - Python 的 copy.deepcopy 真的复制所有内容吗?

转载 作者:行者123 更新时间:2023-11-30 23:18:58 25 4
gpt4 key购买 nike

我的印象是深度复制将所有内容递归地复制到树上,但我遇到的情况似乎与我之前的信念相反。

>>> item = "hello"
>>> a["hello"] = item
>>> b = copy.deepcopy(a)
>>> id(a)
31995776
>>> id(b)
32733616 # I expected this
>>> id(a["hello"])
140651836041376
>>> id(b["hello"])
140651836041376 # I did not expect this

a 和 b 的 id 不同,这是我所期望的,但内部项仍然是同一个对象。 deepcopy 只能复制到一定深度吗?或者这是 Python 存储字符串的特定方式? (我也得到了与整数类似的结果)

最佳答案

deepcopy 只需要创建可变对象的副本,例如列表和字典。字符串和整数是不可变的;它们无法就地更改,因此无需显式创建副本,而是插入对同一对象的引用。

这是一个快速演示,展示了列表(可变)和元组(不可变)之间的区别:

>>> import copy
>>> l = [[1, 2], (3, 4)]
>>> l2 = copy.deepcopy(l)
>>> l2[0] is l[0]
False # created new list
>>> l2[1] is l[1]
True # didn't create new tuple

关于python - Python 的 copy.deepcopy 真的复制所有内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26384031/

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