有时我需要深度复制一个对象,有时它是一个字典对象,所以我使用 **
运算符来轻松复制它,但我一直想知道深度复制在某种意义上是否有任何不同或效率。
哪一个在内存占用、cpu 时间方面更有效,并且 deepcopy 是否像 **
运算符那样迭代?
import copy
myObj = {"some": "data", "to": "copy"}
# With using unpacking operator.
newObj1 = {**myObj}
# With using `copy.deepcopy` function.
newObj2 = copy.deepcopy(myObj)
最佳答案
小心;当这些字典值可变时会有很大的不同,并且 **
的行为与 copy.deepcopy()
不同:
>>> import copy
>>> myObj = {"some": "data", "to": ["copy", "this"]}
>>> newObj1 = {**myObj}
>>> newObj2 = copy.deepcopy(myObj)
>>> myObj["to"][1] = "that"
>>> newObj1
{'some': 'data', 'to': ['copy', 'that']}
>>> newObj2
{'some': 'data', 'to': ['copy', 'this']}
如图PEP 448 ,使用 **
可迭代解包比 copy.deepcopy()
更类似于 dict.copy()
。
关于python - 字典解包运算符与 copy.deepcopy 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64878110/