可变对象的深拷贝与浅拷贝

可变对象与不可变对象的种类

可变对象为list、dict、set,可变对象可以在其 id() 保持固定的情况下可改变其取值

不可变对象为number、string、tuple,具有固定值的对象。不可变对象包括数字、字符串和元组。这样的对象不能被改变。如果必须存储一个不同的值,则必须创建新的对象


image.png

可变对象的深拷贝与浅拷贝

首先深拷贝与浅拷贝针对可变对象的
copy模块

浅拷贝

1、浅拷贝会创建一个新的容器对象
2、对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址)

浅拷贝的手段

1、使用切片操作[:] ——a[:]
2、直接赋值 ——a=b
3、copy模块的copy()方法 ——a.copy()

深拷贝

1.深拷贝和浅拷贝一样,都会创建一个新的容器对象(compound object)
2.和浅拷贝的不同点在于,深拷贝对于对象中的元素,深拷贝都会重新生成一个新的对象

深拷贝的手段

1、用copy模块的deepcopy()方法


image.png

你可能感兴趣的:(可变对象的深拷贝与浅拷贝)