Python深拷贝与浅拷贝区别
可变类型
如list、dict等类型,改变容器内的值,容器地址不变。
不可变类型
如元组、字符串,原则上不可改变值。如果要改变对象的值,是将对象指向的地址改变了
浅拷贝
对于可变对象来说,开辟新的内存空间存储容器对象,但不开辟新空间存储容器的值,容器内部值的对象仍然指向原来的地址。即只对外层对象进行拷贝
不可变对象则将拷贝对象的值进行拷贝
深拷贝
对于可变对象,既开辟新的内存空间存储容器对象,也开辟新空间存储容器的值。也就是,既拷贝容器对象,也拷贝容器对象内部的值对象
不可变对象则将拷贝对象的值进行拷贝
下面这张我自己画的图可以更直观地理解Python中深拷贝与浅拷贝的区别