Python深拷贝与浅拷贝区别

可变类型

如list、dict等类型,改变容器内的值,容器地址不变。

不可变类型

如元组、字符串,原则上不可改变值。如果要改变对象的值,是将对象指向的地址改变了

浅拷贝

对于可变对象来说,开辟新的内存空间存储容器对象,但不开辟新空间存储容器的值,容器内部值的对象仍然指向原来的地址。即只对外层对象进行拷贝

不可变对象则将拷贝对象的值进行拷贝

深拷贝

对于可变对象,既开辟新的内存空间存储容器对象,也开辟新空间存储容器的值。也就是,既拷贝容器对象,也拷贝容器对象内部的值对象

不可变对象则将拷贝对象的值进行拷贝

下面这张我自己画的图可以更直观地理解Python中深拷贝与浅拷贝的区别

 

 

posted @ 2019-11-21 21:04  木心95  阅读(205)  评论(0编辑  收藏  举报