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年6月9日 12:56

相关推荐

  • 服务器怎么换区?服务器切换区域的具体步骤是什么

    服务器换区的核心在于数据的完整迁移与环境的精准适配,而非简单的物理位置变更,成功的换区操作,必须确保数据零丢失、业务中断时间最短以及新环境下的网络与安全配置无误,无论是由于合规要求、用户访问速度需求还是成本优化,服务器怎么换区本质上是一场严谨的数据工程与网络重构,其关键在于制定周密的迁移计划并严格执行,而非盲目……

    2026年3月15日
    13600
  • 高维大数据可视化展示怎么做?高维数据可视化工具推荐

    高维大数据可视化展示是破解海量复杂数据认知黑盒的核心密钥,通过降维映射与交互渲染,将多维异构数据转化为直观决策依据,高维大数据可视化展示的底层逻辑与行业重塑为何传统二维图表已无法胜任?2026年,全球数据圈规模预计突破200ZB,面对动辄成百上千维度的数据集,传统散点图与折线图陷入严重的“维度灾难”,信息遮蔽……

    2026年4月26日
    5000
  • 服务器搭建p是什么意思?服务器搭建详细步骤教程

    服务器搭建P环境的核心在于系统架构的稳定性规划、依赖环境的正确配置以及安全权限的严格把控,成功的关键并非单纯执行安装命令,而在于对底层逻辑的理解与细节的精准把控,一个高效、稳定的服务器环境,必须建立在严谨的初始化配置与科学的权限管理基础之上,这直接决定了后续业务的运行效率与数据安全, 基础环境准备与系统初始化构……

    2026年3月10日
    11700
  • 服务器开2个虚拟主机怎么设置?虚拟主机多站点配置方法

    在单台物理服务器上同时运行两个虚拟主机,是提升硬件资源利用率、降低运营成本并实现业务隔离的高效技术方案,核心结论在于:通过合理的资源分配与配置,两个虚拟主机可以在同一IP地址或不同端口上独立、稳定地运行,互不干扰,从而最大化服务器的投入产出比, 这种架构不仅适用于中小企业网站托管,也是开发测试环境搭建的常用策略……

    2026年4月1日
    9600
  • 服务器操作系统市场份额排名,2026年最新数据是多少?

    当前全球服务器操作系统市场呈现出高度集中的态势,Linux凭借其开源、稳定及云原生优势占据绝对主导地位,Windows Server在传统企业应用中保持稳固,而Unix则逐渐退守特定垂直领域,这一格局的形成并非偶然,而是技术演进与商业需求共同作用的结果,对于企业而言,理解这一市场分布背后的逻辑,比单纯关注数字变……

    2026年2月26日
    28500
  • 高级威胁检测系统首购活动怎么参加?高级威胁防护系统首购优惠有哪些

    面对日益隐蔽的复合型网络攻击,参与高级威胁检测系统首购活动是企业以最优成本建立主动防御体系、实现安全能力从0到1跃升的关键决策,为何2026年首购高级威胁检测系统成为刚需威胁演进倒逼防御升级根据国家计算机网络应急技术处理协调中心2026年年初发布的最新态势报告,高达82%的致命勒索软件和数据窃取事件均利用了传统……

    2026年4月26日
    4500
  • 高级威胁检测系统首购优惠是什么?企业安全防护怎么选

    面对日益隐蔽的APT攻击与0day漏洞,抓住高级威胁检测系统首购优惠完成安全架构升级,是企业以最优成本满足等保合规、实现精准防御的最优解,为何2026年企业急需高级威胁检测系统威胁演进:传统防御已失效根据【网络安全产业联盟】2026年最新报告,超过82%的致命数据泄露源于未知威胁与高级持续性威胁(APT),传统……

    2026年4月26日
    4900
  • 服务器底部按钮有什么用?服务器底部按钮功能详解

    服务器底部按钮作为用户交互的终端触点,直接决定了转化率的高低与用户体验的流畅度,其设计核心在于“可见性”与“防误触”的平衡,以及在技术层面确保功能响应的即时性与稳定性,一个优秀的服务器底部按钮设计,能够将复杂的后台逻辑转化为直观的前端操作,显著降低用户的认知负荷,是连接用户意图与服务器响应的关键桥梁,视觉层级与……

    2026年3月29日
    8800
  • 服务器带宽怎么释放,服务器带宽不足如何解决

    服务器带宽释放的核心在于精准识别流量占用源头,并通过技术手段进行阻断或优化,通常涉及应用层代码优化、网络配置调整以及硬件资源升级三个维度,最直接有效的方案是实施流量清洗与资源压缩,服务器带宽跑满会导致网站访问卡顿、甚至服务不可用,解决这一问题必须遵循“监控定位-分析决策-执行优化”的闭环逻辑,以下从四个层面详细……

    2026年4月5日
    9700
  • 高级数据链路控制怎么用,HDLC协议配置步骤是什么

    高级数据链路控制(HDLC)的使用核心在于依据网络架构需求,精准配置站类型(主站/从站/复合站)、通信模式(NRM/ABM/ARM)及帧结构参数,以实现广域网专线、工业物联网及金融专线等场景下零丢包、低延迟的可靠同步传输,HDLC协议底层逻辑与站型配置协议核心定位HDLC是面向比特的同步数据链路层协议,相较于字……

    2026年4月26日
    4800

发表回复

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