详解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

相关文章

  • python实现泊松图像融合

    python实现泊松图像融合

    这篇文章主要为大家详细介绍了python实现泊松图像融合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Python中使用moviepy进行视频分割的实现方法

    Python中使用moviepy进行视频分割的实现方法

    MoviePy是一个关于视频编辑的python库,主要包括:剪辑,嵌入拼接,标题插入,视频合成(又名非线性编辑),视频处理,和自定制效果。本文重点给大家介绍Python中使用moviepy进行视频分割的实现方法,需要的朋友一起看看吧
    2021-12-12
  • Python实现将HTML转成PDF的方法分析

    Python实现将HTML转成PDF的方法分析

    这篇文章主要介绍了Python实现将HTML转成PDF的方法,结合实例形式分析了Python基于pdfkit模块实现HTML转换成PDF文件的相关操作技巧与注意事项,需要的朋友可以参考下
    2019-05-05
  • Python算法应用实战之栈详解

    Python算法应用实战之栈详解

    栈是什么,你可以理解为一种先入后出的数据结构(First In Last Out),一种操作受限的线性表。下面这篇文章主要给大家介绍了Python中栈的应用实战,文中给出了多个实例,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • python 链接sqlserver 写接口实例

    python 链接sqlserver 写接口实例

    这篇文章主要介绍了python 链接sqlserver 写接口实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Pandas 稀疏数据结构的实现

    Pandas 稀疏数据结构的实现

    如果数据中有很多NaN的值,存储起来就会浪费空间。为了解决这个问题,Pandas引入了一种叫做Sparse data的结构,来有效的存储这些NaN的值,本文就来详细的介绍了一下,感兴趣的可以了解一下
    2021-07-07
  • Python asyncio的一个坑

    Python asyncio的一个坑

    这篇文章主要介绍了Python asyncio的一个坑,文章从Python编程错误开始介绍,改变与好多变不成中常犯的错误,我们今天就来分析分析吧,需要的下伙伴也可以参考一下
    2021-12-12
  • 分享4个Python中高效省时的技巧

    分享4个Python中高效省时的技巧

    小伙伴们日常工作中都必不可少地使用Python实现一些简单的功能,但是不同的人所编写的代码执行效率往往是不同的,下面这篇文章主要给大家介绍了4个Python中高效的技巧,需要的朋友可以参考下
    2022-05-05
  • scrapy头部修改的方法详解

    scrapy头部修改的方法详解

    这篇文章主要给大家介绍了关于scrapy头部修改的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Pandas中DataFrame.head()函数的具体使用

    Pandas中DataFrame.head()函数的具体使用

    DataFrame.head()是Pandas库中一个非常重要的函数,用于返回DataFrame对象的前n行,本文主要介绍了Pandas中DataFrame.head()函数的具体使用,感兴趣的可以了解一下
    2024-07-07

最新评论