Python:使用copy.deepcopy复制对象或自己编写复制方法

3 投票
1 回答
1530 浏览
提问于 2025-04-16 23:28

目前我正在使用一个叫做copy的模块来复制我手头上的一些对象。

在某些情况下(这种情况经常发生),我需要创建多个原始对象的副本,然后对每个副本进行单独的修改(这就是我使用copy的原因)。

这个对象里面有好几种不同的数据类型(比如列表、整数、字符串,还有其他类),这些副本需要保持相同的值,但我不确定使用copy.deepcopy()会不会更快,还是像下面这样做更好:

def copy(self, other):
   other.prop1 = self.prop1
   other.prop2 = self.prop2
   other.prop3 = self.prop3

有没有人遇到过这个问题,然后觉得使用copy模块会比其他大多数人想到的方法更快呢?

附言:上面的代码不能正确复制可变对象和我提到的那些“其他类”。也许这说明deepcopy是最安全(也是最快)的选择?

1 个回答

2

我不是想随便说说,但你有没有考虑过对你的代码进行性能分析?这里有相关文档。你可以把copy.deepcopy和你自己写的复制方法进行比较。这样你就能得到一些具体的数据,帮助你了解自己的情况,从而做出最好的决定。如果有人问你为什么这么做,你也能有依据来解释!

撰写回答