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://idctop.com/article/493602.html

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

相关推荐

  • 防火墙配置是否得当,技术细节如何确保网络安全?

    防火墙配置绝非简单的命令堆砌,而是网络安全防御体系的基石,看懂防火墙配置,意味着理解其如何执行访问控制、抵御威胁、管理流量,并最终守护网络边界的安全,这要求管理员具备深厚的网络知识、安全策略思维以及对设备特性的精准把握, 一份优秀的配置,是安全策略清晰落地、性能优化得当、管理维护便捷的综合体现, 洞悉配置的核心……

    2026年2月4日
    14830
  • 服务器应用实例有哪些,服务器应用场景配置指南

    服务器应用实例的核心价值在于通过具体场景验证架构的稳定性与效率,最终实现企业IT资源的最优配置与业务连续性保障,无论是大型分布式系统还是中小型企业网络,服务器的部署形态直接决定了数据处理能力与响应速度,通过对真实场景的深度剖析,我们可以发现,优秀的服务器架构不仅仅是硬件的堆砌,更是软件定义、网络规划与安全策略的……

    2026年3月28日
    10700
  • 佛山家居网站如何做全网营销,家居建材网站推广哪个平台好?

    佛山家居品牌全网营销实战策略指南佛山作为全球家居制造中心,拥有极强的供应链优势,在数字化时代,仅靠传统的展厅模式已难以支撑规模化增长,实现从“制造”到“品牌”的跨越,必须构建一套全网营销矩阵,官网建设:品牌信任的数字底座官网不只是展示产品,更是转化客户的核心阵地,视觉体验:必须采用高品质、大尺寸的产品实拍图,体……

    2026年7月13日
    1000
  • 服务器屏蔽ip段怎么写?服务器屏蔽特定ip段的代码配置方法

    服务器屏蔽IP段的核心目标是精准拦截恶意流量,保障系统安全与资源可用性,正确实现IP段屏蔽需结合网络拓扑、防护层级与操作平台,优先选择在防火墙或Web服务器层执行,避免在应用层增加额外延迟,以下从原理、方法、实操步骤、注意事项四方面展开,确保方案可落地、可验证、可复用,为何要屏蔽IP段?——明确场景与价值IP段……

    2026年4月14日
    5400
  • 服务器怎么取消权限?管理员权限设置方法

    服务器取消权限的核心在于精准定位权限对象与执行严格的权限回收指令,无论是Windows还是Linux系统,最安全且高效的操作逻辑均为:先查看当前权限列表,再删除特定用户或组的权限,最后验证权限是否已彻底移除,这一过程必须遵循“最小权限原则”,确保在取消权限时不影响系统或其他用户的正常运行,防止因权限设置不当引发……

    2026年3月14日
    12700
  • 个人电脑怎么做云服务器?个人电脑搭建云服务器教程

    利用闲置个人电脑搭建云服务器是完全可行的,其核心在于通过内网穿透技术或公网IP映射,将本地硬件转化为具备远程访问能力的服务器节点,虽成本极低但需承担较高的网络配置门槛与安全维护风险,在云计算巨头垄断市场的今天,许多技术爱好者和小型开发者并不愿意为低频使用的测试环境支付高昂的月租费用,将手头的旧笔记本、台式机甚至……

    2026年5月27日
    5300
  • 服务器地区怎么选择,国内和国外机房有什么区别?

    选择服务器地区并非单纯的价格比较,而是一个涉及访问速度、法律合规、SEO优化及业务连续性的综合决策过程,核心结论在于:优先将服务器部署在业务目标用户最集中的区域,其次考虑数据主权与法律合规要求,最后结合成本与网络质量进行权衡, 对于国内业务,大陆节点是首选;对于出海业务,则需根据目标国家选择当地节点;若追求免备……

    2026年2月17日
    18800
  • 我的世界java版有哪些服务器,推荐哪个好?

    我的世界Java版服务器主要分为官方领域服、第三方大型服务器、自建服务器和租用服务器四大类,其中租用服务器因其性能和灵活性成为多数玩家的长期选择,官方领域服:便捷但局限Mojang 官方提供的 Realms 服务是最简单的联机方案,你只需要在游戏内购买订阅,就能创建一个最大支持十人的私人服务器,所有备份和更新都……

    2026年8月8日
    1100
  • 服务器带宽是不是越高越好?服务器带宽多少才合适

    服务器带宽并非越高越好,而是需要根据实际业务需求、并发访问量以及成本预算进行精准匹配,盲目追求高带宽不仅会造成严重的资源浪费,还会大幅增加运营成本,甚至掩盖服务器性能瓶颈, 合理的带宽配置应当是在保障业务流畅运行的前提下,实现性价比的最优化,核心结论:带宽配置的本质是寻找性能与成本的平衡点, 带宽就像高速公路的……

    2026年4月2日
    9900
  • 服务器怎么固定ip地址设置?服务器静态IP配置方法

    服务器固定IP地址设置的核心在于通过网络配置手动指定静态IP参数,确保服务器在网络中拥有恒定不变的通信标识,这是保障业务连续性与稳定访问的基石,动态IP虽配置简便,但地址租约更新或重启导致的IP变更会引发服务中断、DNS解析失败及远程连接丢失,对于企业级应用、数据库服务、文件共享及Web站点而言,静态IP地址是……

    2026年3月19日
    14400

发表回复

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