Python如何实现对象克隆,浅拷贝和深拷贝有什么区别?

Python 对象克隆详解

在 Python 中,“克隆”通常指的是创建现有对象的副本,由于 Python 的变量实际上是对对象的引用,直接使用赋值符号 并不会创建新对象,而只是创建了一个指向同一内存地址的新引用。

为了实现真正的克隆,我们需要根据对象的复杂程度选择浅拷贝(Shallow Copy)或深拷贝(Deep Copy)。

Python 浅拷贝 vs 深拷贝,一行代码分清引用与独立复制
加载中
Python 浅拷贝 vs 深拷贝,一行代码分清引用与独立复制

引用赋值(非克隆)

当你使用 a = b 时,并没有发生克隆,两个变量指向的是同一个对象,修改其中一个,另一个也会随之改变。

  • 特点:不创建新对象,仅增加引用计数。
  • 适用场景:仅需起个别名时。

浅拷贝 (Shallow Copy)

浅拷贝会创建一个新对象,但如果原对象内部包含其他可变对象(如列表中的列表),它只会拷贝这些内部对象的引用。

实现方法

  • 使用 copy 模块:copy.copy()
  • 使用切片(仅限列表):new_list = old_list[:]
  • Python如何实现对象克隆,浅拷贝和深拷贝有什么区别?

    使用工厂函数:new_list = list(old_list) 或 new_dict = dict(old_dict)

  • 使用内置方法:new_list = old_list.copy()

关键特性

  • 第一层独立:修改克隆后的顶层元素不会影响原对象。
  • 嵌套层共享:修改克隆对象内部的嵌套可变对象,原对象会被同步修改。

深拷贝 (Deep Copy)

深拷贝会递归地复制对象及其包含的所有子对象,它会创建一个完全独立的副本,原对象与新对象之间没有任何共享的内存地址。

实现方法

  • 使用 copy 模块:copy.deepcopy()

关键特性

  • 完全独立:无论对象嵌套多少层,修改新对象都不会影响原对象。
  • 性能开销:由于需要递归遍历并复制所有内容,深拷贝比浅拷贝慢且占用更多内存。

核心对比总结

方式 语法

Python如何实现对象克隆,浅拷贝和深拷贝有什么区别?

顶层对象

嵌套对象独立程度
引用赋值b = a共享共享完全不独立
浅拷贝copy.copy(a)创建新对象共享部分独立
深拷贝copy.deepcopy(a)创建新对象创建新对象完全独立

代码示例演示

import copy# 准备一个嵌套列表original = [[1, 2], [3, 4]]# 1. 引用赋值ref_copy = original# 2. 浅拷贝shallow_copy = co

Python如何实现对象克隆,浅拷贝和深拷贝有什么区别?

py.copy(original) # 3. 深拷贝 deep_copy = copy.deepcopy(original) # 修改嵌套元素 original[0][0] = 'X' print(f"原对象: {original}") # [['X', 2], [3, 4]] print(f"引用赋值: {ref_copy}") # [['X', 2], [3, 4]] -> 受影响 print(f"浅拷贝: {shallow_copy}") # [['X', 2], [3, 4]] -> 受影响 (因为嵌套对象是共享的) print(f"深拷贝: {deep_copy}") # [[1, 2], [3, 4]] -> 不受影响 (完全独立) # 修改顶层元素 original.append([5, 6]) print(f"原对象: {original}") # [['X', 2], [3, 4], [5, 6]] print(f"浅拷贝: {shallow_copy}") # [['X', 2], [3, 4]] -> 不受影响 (顶层已独立)

选择指南

  • 如果对象是不可变类型(如数字、字符串、元组),直接赋值即可,因为它们无法被修改。
  • 如果对象是简单的一层可变类型(如简单的列表或字典),使用浅拷贝。
  • 如果对象包含复杂的嵌套结构(如列表嵌套字典,或自定义类的实例),且需要确保修改副本不影响原件,必须使用深拷贝。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/493602.html

赞 (0)
点播CDN是什么?如何选择高性价比的视频点播CDN加速服务?
上一篇 2026年7月14日 08:13
什么是百度公共CDN?百度公共CDN有哪些好用的前端资源库?
下一篇 2026年7月14日 08:17

相关推荐

  • 个人免费网站如何做?免费建站平台有哪些推荐

    个人免费网站制作的核心在于利用开源CMS或静态生成器搭建,通过GitHub Pages等免费托管服务部署,虽无需资金成本,但需投入时间学习基础技术并放弃部分高级功能,在2026年的互联网生态中,构建个人数字资产的方式已经发生了根本性转变,过去那种购买域名、租用服务器、安装复杂环境的“重资产”模式,正逐渐被轻量级……

    2026年6月14日
    6100
  • 服务器最新哪个版本,2026年企业用哪个系统最稳定?

    关于服务器软件生态的版本选择,核心结论非常明确:“最新”并不等同于“最好”,企业级应用应当优先选择具备长期支持(LTS)且稳定性经过验证的版本,而非盲目追求数字最大的版本, 具体而言,对于操作系统,Linux内核推荐6.1及以上或Ubuntu 24.04 LTS,Windows环境推荐Server 2022;对……

    2026年2月19日
    31700
  • 服务器本机怎么挂网站,服务器搭建网站怎么做

    在服务器本机挂网站是实现Web服务落地的核心手段,这种方式能够最大化利用硬件资源,提供灵活的配置选项,但前提是必须构建稳固的系统环境与安全防护体系, 相比于使用云厂商提供的托管型服务,直接在操作系统层面部署网站环境,虽然技术门槛较高,但能获得更极致的性能调优空间和更低的长期运营成本,要实现这一目标,需要从环境搭……

    2026年2月21日
    15000
  • 国产服务器监控系统软件哪个好?2026年十大开源工具推荐!

    服务器监控系统软件是专门设计用于实时跟踪服务器性能、健康状态和可用性的工具,它通过自动化数据采集和分析,确保IT基础设施稳定高效运行,防止故障并优化资源利用,在数字化业务环境中,这类软件已成为企业IT运维的核心支柱,直接关系到业务连续性和成本控制,什么是服务器监控系统软件?服务器监控系统软件是一套集成工具,用于……

    2026年2月8日
    15300
  • 服务器防火墙选购指南,机房设备如何配置更安全?

    服务器机房防火墙是数据中心网络安全的核心防线,通过监控和控制进出网络流量,防止未授权访问、恶意攻击和数据泄露,它结合硬件和软件技术,在服务器、存储设备和网络边界部署,确保关键业务连续运行,现代防火墙采用多层防御策略,包括包过滤、状态检测和应用层分析,有效拦截DDoS攻击、勒索软件和内部威胁,随着数字化转型加速……

    2026年2月14日
    13600
  • 如何寻找专业的服务器服务点,服务器维护保养有哪些注意事项?

    服务器服务点是构建高性能网络架构的关键基础设施节点,通过在地理位置上靠近终端用户,能够显著降低数据传输延迟,提升业务在高并发场景下的响应速度与稳定性,服务器服务点在现代互联网架构中的核心价值在当前的数字化环境中,无论是实时在线游戏、金融高频交易,还是大规模视频直播,对网络响应的要求已经从“能用”进化到了“毫秒级……

    2026年7月13日
    11300
  • 服务器已有一个硬盘再加一个时需要重新做raid吗

    服务器已有一个硬盘再加一个时需要重新做raid吗?核心结论是:通常不需要推翻原有RAID架构重新创建,但具体操作取决于服务器硬件配置、现有RAID级别以及新增硬盘的目的, 绝大多数企业级服务器支持在线扩容或添加新磁盘阵列,而无需清除现有数据,只有在极少数情况下,如主板RAID功能限制或需要改变现有RAID级别时……

    2026年4月11日
    14900
  • 服务器的负载均衡是什么意思?负载均衡的作用有哪些?

    服务器的负载均衡是什么意思服务器的负载均衡是一种核心网络技术,其核心目标是将涌入的网络流量或计算请求智能、高效地分发到后端多台服务器或计算资源上,它本质上是一个“流量指挥官”或“任务调度器”,确保没有任何单台服务器因不堪重负而崩溃,从而最大化资源利用率、提升应用处理能力(吞吐量)并保障服务的连续可用性(高可用性……

    服务器运维 2026年2月11日
    14000
  • 服务器真能终身使用吗?揭秘服务器寿命的真相!,(注,严格按您要求,仅提供符合SEO优化的双标题,无任何额外说明。标题结构为,长尾疑问句+流量核心词组合,共24字,包含用户提供的关键词并拓展高搜索量相关词。)

    服务器有终身吗?没有,服务器,无论是物理的还是虚拟的,都不存在“终身”使用的概念,它的“生命”终结由多种因素决定,而非单纯的时间流逝,理解服务器生命周期的不同维度,对于企业IT规划、成本控制和业务连续性至关重要,服务器“寿命”的终结可以从几个关键层面来理解: 物理硬件的磨损与老化 (硬件寿命)这是最直观的层面……

    2026年2月13日
    13600
  • 服务器怎么关闭启动?服务器启动关闭步骤详解

    服务器的关闭与启动并非简单的电源开关操作,而是涉及数据完整性、硬件保护及服务可用性的系统化工程,核心结论是:标准化的服务器开关机流程必须遵循“先停服务、后断系统、最终断电”与“先通电、后起系统、最后起服务”的原则,严禁直接强制断电,以最大程度避免文件系统损坏与数据丢失, 掌握正确的{服务器怎么关闭启动}方法,是……

    2026年3月20日
    11300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注