gpt4 book ai didi

python - 字典解包运算符与 copy.deepcopy 之间的区别?

转载 作者:行者123 更新时间:2023-12-04 14:10:29 24 4
gpt4 key购买 nike

有时我需要深度复制一个对象,有时它是一个字典对象,所以我使用 ** 运算符来轻松复制它,但我一直想知道深度复制在某种意义上是否有任何不同或效率。哪一个在内存占用、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/

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