【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)
深拷贝和浅拷贝
浅拷贝
- 什么是浅拷贝
- python中的赋值语句一般都是变量指向数据(是一个索引)
- 浅拷贝
copy.copy()
- 注意:python中的浅拷贝和赋值语句会随着源数据的改变而发生变化;
由于元组的不可变性,浅拷贝copy.copy()
元组时不会创建新的空间,而是和赋值一样建立索引。
深拷贝
- 深拷贝就是将内存中的数据重新复制一份到一个新的内存空间;因此,深拷贝获取的数据不会跟随源数据而变化
- 可以用
copy
模块中的deepcopy()
方法实现,用id()
来验证
- 深拷贝简单流程图
- 注意:深拷贝
copy.deepcopy()
在拷贝元组的时候和浅拷贝一样,只是建立一个索引
小结
-
深拷贝
copy.deepcopy()
的一个特点:- 如果您拷贝的数据都是不可变类型,那么它和浅拷贝/赋值效果一样,只是建立一个索引;
- 但是只要拷贝的数据中包含任一可变数据,那么它就会在新的内存空间以递归的方式复制一份完整的新数据。
切片和字典
- 通过一个实验来看看切片
- 切片也数据浅拷贝
- 再看看字典自带的copy方法
dict.copy()
- 可以看出,字典的copy也是 浅拷贝
- 还有一种情况:如果我们向一个函数的形参传入一个列表,列表会在函数对列表的操作发生相应的变化
-更多内容