【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)


深拷贝和浅拷贝

浅拷贝

  • 什么是浅拷贝

  • python中的赋值语句一般都是变量指向数据(是一个索引)

  • 浅拷贝copy.copy()

  • 注意:python中的浅拷贝和赋值语句会随着源数据的改变而发生变化;
    由于元组的不可变性,浅拷贝copy.copy()元组时不会创建新的空间,而是和赋值一样建立索引。

深拷贝

  • 深拷贝就是将内存中的数据重新复制一份到一个新的内存空间;因此,深拷贝获取的数据不会跟随源数据而变化
  • 可以用copy模块中的deepcopy()方法实现,用id()来验证

  • 深拷贝简单流程图

  • 注意:深拷贝copy.deepcopy()在拷贝元组的时候和浅拷贝一样,只是建立一个索引


小结

  • 深拷贝copy.deepcopy()的一个特点:

    • 如果您拷贝的数据都是不可变类型,那么它和浅拷贝/赋值效果一样,只是建立一个索引;
    • 但是只要拷贝的数据中包含任一可变数据,那么它就会在新的内存空间以递归的方式复制一份完整的新数据。

切片和字典

  • 通过一个实验来看看切片

  • 切片也数据浅拷贝
  • 再看看字典自带的copy方法dict.copy()

  • 可以看出,字典的copy也是 浅拷贝
  • 还有一种情况:如果我们向一个函数的形参传入一个列表,列表会在函数对列表的操作发生相应的变化


-更多内容