深拷贝和浅拷贝的区别是什么

2020-07-18  本文已影响0人  Vk_醉曦风

深拷贝、浅拷贝(copy.copy copy.deepcopy)

深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象. 在 Python 中, 我们使用 deepcopy()函数进行深拷贝.

深拷贝是对一个对象的所有层次的拷贝(本质上递归浅拷贝),开辟一个新的空间。分片表达式进行的拷贝是深拷贝,字典的copy是深拷贝.

浅拷贝是将对象的引用复制给另一个对象。因此,如果我们在副本中进行更改,则会影响原对象. 使用 copy()函数进行浅拷贝.
浅拷贝是对一个对象的顶层拷贝, 只拷贝引用, 没有拷贝内容 .

对可变数据类型(列表、字典、集合)进行浅拷贝,只是指向引用地址,不会开辟新的空间

对不可变数据类型(数字、字符串、元组)进行浅拷贝,会开辟一个新的空间(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的)

浅拷贝后,改变原始对象中可变类型的元素的值,拷贝对象的值也随之改变。改变原始对象中不可变类型元素的值,拷贝对象的值也不会改变

上一篇下一篇

猜你喜欢

热点阅读