当前位置: 首页 > article >正文

python中深拷贝和浅拷贝的区别

目录

一、浅拷贝 (Shallow Copy)

二、深拷贝 (Deep Copy)

三、使用场景


在Python中,拷贝机制用于创建已存在对象的新实例。根据复制方式的不同,可以分为浅拷贝(shallow copy)和深拷贝(deep copy)。这两种拷贝机制的区别在于如何处理对象中的引用类型。

一、浅拷贝 (Shallow Copy)

浅拷贝会创建一个新的对象,这个对象有着从原对象中获得的所有属性值的副本。如果对象的属性是基本数据类型(如数字、字符串),那么这些属性会被直接复制到新对象中;但如果属性是引用类型(如列表、字典、对象等),则只复制该引用类型对象的引用,而不是实际的对象本身。

这意味着,对于浅拷贝后的两个对象,如果其中一个对象的引用类型属性发生了变化,另一个对象的相应属性也会受到影响。

示例:

import copy

original = [1, 2, [3, 4]]
shallow_copy = copy.copy(original)

original[2].append(5)  # 修改原始列表中的子列表
print(original)         # 输出: [1, 2, [3, 4, 5]]
print(shallow_copy)     # 输出: [1, 2, [3, 4, 5]]

 运行结果:

二、深拷贝 (Deep Copy)

深拷贝不仅会创建一个新的对象,还会递归地拷贝原对象中的所有子对象,这样就使得新对象和原对象完全独立。即使在原对象中的引用类型属性发生变化,也不会影响到深拷贝后的新对象。

示例:

import copy

original = [1, 2, [3, 4]]
deep_copy = copy.deepcopy(original)

original[2].append(5)  # 修改原始列表中的子列表
print(original)         # 输出: [1, 2, [3, 4, 5]]
print(deep_copy)        # 输出: [1, 2, [3, 4]]

运行结果: 

三、使用场景

  • 当你需要创建一个对象的拷贝,而这个拷贝需要与原对象完全独立时,应该使用深拷贝
  • 如果拷贝的对象不包含引用类型,或者你不需要完全独立的拷贝,则可以使用浅拷贝,因为浅拷贝通常比深拷贝效率更高。

在实际应用中,选择哪种拷贝方式取决于你的具体需求。如果你需要确保复制的对象之间没有任何关联,特别是在涉及复杂对象或嵌套对象时,深拷贝通常是更好的选择。


http://www.kler.cn/a/349940.html

相关文章:

  • Unity——从共享文件夹拉取资源到本地
  • 常见的多媒体框架(FFmpeg GStreamer DirectShow AVFoundation OpenMax)
  • 做Midjourney最好图文教程-提示词公式以及高级参数讲解
  • java读取设置pdf属性信息
  • c经典题目
  • Python Pandas数据清洗与处理
  • MySQL 大数据量导入与导出全攻略
  • 扫普通链接二维码打开小程序
  • 攻上云端,独立数据库OceanBase的生存之道
  • Flink算子状态为何只能用ListState?
  • 网络爬虫-数美滑块验证码
  • 24/10/12算法笔记 VGG
  • 交叉编译--目标平台aarch64 ubuntu 22.04
  • gaussdb 主备版本8 SQL参考 学习
  • Elasticsearch字段数据类型
  • 入侵及防护:7个迹象说明你的手机可能被入侵!
  • 涂鸦app宠物智能喂食器方案
  • javascript中`Math.ceil` 和 `Math.floor`的区别
  • 大数据和云计算
  • 用Spring AI 做智能客服,基于私有知识库和RAG技术
  • Github 优质项目推荐(第七期)
  • Data+AI下的数据湖和湖仓一体发展史
  • 力扣853.车队
  • 使用Python-pptx轻松批量添加水印
  • Zabbix自定义监控8080端口的连接数
  • uniapp 小程序0到1教程