Python中的复制、浅拷贝与深拷贝解读

 更新时间:2023年11月04日 09:39:43   作者:惊瑟  
这篇文章主要介绍了Python中的复制、浅拷贝与深拷贝解读,对于可变对象,赋值是最简单省事的,如b=a,意思是直接使得a指向b代表的对象,两者id一样,指向同一个对象,一个修改,另一个也随之变化,需要的朋友可以参考下

1.对象的三要素

id、type以及value,id唯一标识一个对象,相当于地址,id一样,说明就是同一个东西。type和value就是字面意思。

2.==和is

==比较的是value,is比较的是id,意思是  “是否为同一个对象”,条件比==要严格。

3.可变对象/不可变对象

Python一切均是对象,不可变对象有:数字、字符串、元组等,为什叫不可变对象呢?难道我不能为一个整形变量重新赋值?相信一定也有这种疑问,下面看个例子:

看的出来,为a重新赋值,其实是令a指向了另一个对象,字符串,元组也一个道理,对指向此类对象的变量做修改,只是使其指向了另外一个对象。

而对于可变对象,如list,如下图所示,修改后id不变,还是这个东西

4.赋值、浅拷贝与深拷贝

对于不可变对象,这三者作用一样,均是使得新变量指向这个不可变对象,因此id都是一样的:

对于可变对象,赋值是最简单省事的,如b=a,意思是直接使得a指向b代表的对象,两者id一样,指向同一个对象,一个修改,另一个也随之变化:

而浅拷贝copy.copy则是另外新建出一个对象,如a=[1,2,[1,2]],b=copy.copy(a),a与b的id不同,但里面内容所指还是相同,比如a[2]和b[2]仍然指向同一个对象,修改其中一个,另外一个也会变:

深拷贝则是完全复制一份,还是上面那个例子,深拷贝后,非但a和b的id不同。连里面的对象id也不同(不可变对象除外),一个修改并不会影响另一个,如下图:

以上为个人拙见,如有不对,还望指出。

到此这篇关于Python中的复制、浅拷贝与深拷贝解读的文章就介绍到这了,更多相关Python复制与浅拷贝与深拷贝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Python中操作列表之list.extend()方法的使用

    在Python中操作列表之list.extend()方法的使用

    这篇文章主要介绍了在Python中操作列表之list.extend()方法的使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Python下利用BeautifulSoup解析HTML的实现

    Python下利用BeautifulSoup解析HTML的实现

    这篇文章主要介绍了Python下利用BeautifulSoup解析HTML的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Python设计与实现一个节假日统计器

    Python设计与实现一个节假日统计器

    这篇文章主要介绍了一个基于Python Tkinter开发的智能节假日统计器,能够准确显示中国法定节假日、调休安排,并提供直观的日历视图和统计功能,感兴趣的可以了解下
    2025-10-10
  • 华为2019校招笔试题之处理字符串(python版)

    华为2019校招笔试题之处理字符串(python版)

    这篇文章主要为大家详细介绍了华为2019校招笔试题之处理字符串,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Python使用asyncio包处理并发详解

    Python使用asyncio包处理并发详解

    这篇文章主要为大家详细介绍了Python使用asyncio包处理并发的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Python机器学习应用之朴素贝叶斯篇

    Python机器学习应用之朴素贝叶斯篇

    朴素贝叶斯模型是一组非常简单快速的分类算法,通常适用于维度非常高的数据集。因为运行速度快,而且可调参数少,因此非常适合为分类问题提供快速粗糙的基本方案
    2022-01-01
  • Python3使用QT编写基础的对话框程序的详细流程

    Python3使用QT编写基础的对话框程序的详细流程

    Qt框架凭借其跨平台能力和丰富的控件库,在桌面应用开发领域占据重要地位,当Python的简洁语法遇上Qt的成熟生态,便诞生了PyQt/PySide这两个黄金搭档,本文给大家介绍了Python3如何使用QT编写基础的对话框程序,需要的朋友可以参考下
    2025-06-06
  • python实战游戏之史上最难最虐的扫雷游戏没有之一

    python实战游戏之史上最难最虐的扫雷游戏没有之一

    这篇文章主要介绍了使用 python 实现扫雷游戏,不同于传统过时的扫雷,今天我们用 Python 增加了新花样,文中给大家介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • Python PO设计模式的具体使用

    Python PO设计模式的具体使用

    这篇文章主要介绍了Python PO设计模式的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python WebSocket长连接心跳与短连接的示例

    Python WebSocket长连接心跳与短连接的示例

    这篇文章主要介绍了Python WebSocket长连接心跳与短连接的示例,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11

最新评论