Python中的深拷贝与浅拷贝
Posted 黑马程序员官方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中的深拷贝与浅拷贝相关的知识,希望对你有一定的参考价值。
文章目录
1. python中可变和不可变
-
可变类型(mutable),创建后可以继续修改对象的内容(值)
字典、列表
-
不可变类型(unmutable) ,一旦创建就不可修改的对象(值)
数字, 字符串,元组
当内容发生修改,计算机重新分配一块内存空间
2. 简单可变类型拷贝
-
深拷贝:
- 会产生新的空间
- 能够保持各自的独立性
- 如果拷贝的对象,子对象也会拷贝(产生新的空间)
-
浅拷贝
- 不会产生新的空间
- 源对象和副本对象指向同一个空间
- 如果拷贝的对象,子对象不会拷贝(不会产生新的空间)
-
简单可变类型的拷贝总结:
简单可变类型的数据不管深拷贝还是浅拷贝,都会产生新的空间,而且保持各自的独立性
3. 复杂可变类型拷贝
- 复杂可变类型的深浅拷贝问题
- 浅拷贝,拷贝的是顶层对象的值,子对象不会拷贝(只是引用子对象)
- 深拷贝,拷贝的顶层对象和对象的子对象,子对象会产生新的内存空间
4. 简单不可变类型拷贝
- 简单不可变类型
- copy() 浅拷贝,副本和源指向同一个空间
- deepcopy() 浅拷贝,副本和源指向同一个空间
5. 复杂不可变类型拷贝
- 复杂不可变类型的拷贝问题
- 浅拷贝, 直接引用
- 深拷贝,看数据具体是可变还是不可变的,如果数据是可变的,会产生新的空间,保持数据的独立性
6. 切片拷贝、字典拷贝
- 切片拷贝: 浅拷贝(如果是简单可变类型,底层会产生新的空间)
- 字典拷贝: 浅拷贝
以上是关于Python中的深拷贝与浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章