详解python深浅拷贝区别

 更新时间:2019年06月24日 15:57:49   投稿:laozhang  
在本篇文章里小编给大家整理了关于python深浅拷贝区别的相关知识点总结,有兴趣的朋友们可以参考下。

在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。

浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制

深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。

深浅拷贝的作用

1,减少内存的使用

2,以后在做数据的清洗、修改或者入库的时候,对原数据进行复制一份,以防数据修改之后,找不到原数据。

浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

>>>a = {1: [1,2,3]}>>> b = a.copy()>>> a, b({1: [1, 2, 3]}, {1: [1, 2, 3]})>>> a[1].append(4)>>> a, b({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

深度拷贝需要引入 copy 模块:

>>>import copy>>> c = copy.deepcopy(a)>>> a, c({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})>>> a[1].append(5)>>> a, c({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})

1、b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

aaa.png

2、b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

sss.png

相关文章

  • Matplotlib之解决plt.savefig()保存多张图片有重叠的问题

    Matplotlib之解决plt.savefig()保存多张图片有重叠的问题

    这篇文章主要介绍了Matplotlib之解决plt.savefig()保存多张图片有重叠的问题,具有很好的参考价值,希望对大家有所帮助,
    2023-09-09
  • python面向对象值元类的声明周期详解

    python面向对象值元类的声明周期详解

    这篇文章主要介绍python的元类生命周期,我们可以和之前探讨类的生命中周期一样,我们写一个案例,使用print来输出一些信息,来判断如果基于元类而言,那么生命周期是怎么样的,文中有详细的代码示例,需要的朋友可以参考下
    2023-05-05
  • 使用python批量修改XML文件中图像的depth值

    使用python批量修改XML文件中图像的depth值

    这篇文章主要介绍了使用python批量修改XML文件中图像的depth值,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Python 处理图片像素点的实例

    Python 处理图片像素点的实例

    今天小编就为大家分享一篇Python 处理图片像素点的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python如何输出反斜杠

    python如何输出反斜杠

    在本篇内容中小编给大家整理了一篇关于python怎么输出反斜杠的相关基础文章,有兴趣的朋友们可以学习参考下。
    2020-06-06
  • Python文件读写open函数详解

    Python文件读写open函数详解

    这篇文章主要介绍了Python文件读写open函数详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • pytorch多进程加速及代码优化方法

    pytorch多进程加速及代码优化方法

    今天小编就为大家分享一篇pytorch多进程加速及代码优化方法。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 使用wxPython和ECharts实现生成和保存HTML图表

    使用wxPython和ECharts实现生成和保存HTML图表

    wxPython是一个基于wxWidgets的Python GUI库,ECharts是一个用于数据可视化的JavaScript库,本文主要为大家介绍了如何使用wxPython和ECharts库来生成和保存HTML图表,感兴趣的可以学习一下
    2023-08-08
  • Python详细对比讲解break和continue区别

    Python详细对比讲解break和continue区别

    这篇文章主要介绍了python循环控制语句 break 与 continue,break就像是终止按键,不管执行到哪一步,只要遇到break,不管什么后续步骤,直接跳出当前循环
    2022-06-06
  • python爬虫利器之requests库的用法(超全面的爬取网页案例)

    python爬虫利器之requests库的用法(超全面的爬取网页案例)

    这篇文章主要介绍了python爬虫利器之requests库的用法(超全面的爬取网页案例),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论