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

文章目录

    • 深拷贝和浅拷贝
      • 浅拷贝
      • 深拷贝
    • 小结
    • 切片和字典


深拷贝和浅拷贝

浅拷贝

  • 什么是浅拷贝

【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第1张图片

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

【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第2张图片

  • 浅拷贝copy.copy()

【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第3张图片

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

【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第4张图片

深拷贝

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

【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第5张图片

  • 深拷贝简单流程图

【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第6张图片

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

【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第7张图片


小结

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

    • 如果您拷贝的数据都是不可变类型,那么它和浅拷贝/赋值效果一样,只是建立一个索引;
    • 但是只要拷贝的数据中包含任一可变数据,那么它就会在新的内存空间以递归的方式复制一份完整的新数据。
      【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第8张图片

切片和字典

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

【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第9张图片

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

【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第10张图片

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

【Python自学笔记】python中的 深拷贝 和 浅拷贝(深度学习深拷贝和浅拷贝)_第11张图片
-更多内容

你可能感兴趣的:(python自学笔记)