可变与不可变
可变与不可变,是指内存中的值是否可以被改变
- 可变类型,创建之后可以继续修改内容
- 不可变类型,创建之后不能继续修改内容
我们可以使用id()
来查看内存地址
拷贝
使用copy模块进行拷贝操作。
- 浅拷贝
- 引用地址,不产生新的内存空间,原对象与copy对象指向同一个内存空间
-
对简单可变类型进行浅拷贝,也会产生新空间
-
对复杂可变类型进行浅拷贝,子对象引用原子对象的地址,父对象使用新空间
浅拷贝只拷贝最顶层数据
-
- 只拷贝父对象,不拷贝子对象
- 使用
copy.copy()
进行浅拷贝
- 引用地址,不产生新的内存空间,原对象与copy对象指向同一个内存空间
- 深拷贝
- 产生新的内存空间,原对象与copy对象指向不同的内存空间
- 会拷贝目标对象及子对象
- 拷贝简单不可变的数据类型时深拷贝和浅拷贝都是直接引用
- 拷贝嵌套可变类型的不可变数据时会开辟多个存储空间
- 使用
copy.deepcopy()
进行深拷贝