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/python%e5%a6%82%e4%bd%95%e5%ae%9e%e7%8e%b0%e5%af%b9%e8%b1%a1%e5%85%8b%e9%9a%86%ef%bc%8c%e6%b5%85%e6%8b%b7%e8%b4%9d%e5%92%8c%e6%b7%b1%e6%8b%b7%e8%b4%9d%e6%9c%89%e4%bb%80%e4%b9%88%e5%8c%ba%e5%88%ab/

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

相关推荐

  • DNS服务器可以建立哪些资源记录,什么是DNS资源记录

    在DNS服务器中可以建立A记录、AAAA记录、CNAME记录、MX记录、TXT记录等多种资源记录,每一种记录对应不同的解析功能,从基础的域名指向到邮件路由、安全验证,合理配置这些记录是保障网站与邮件服务稳定运行的关键第一步,DNS资源记录:域名世界的导航地图如果把互联网比作一张巨大的地图,每个网站就是地图上的一……

    2026年8月6日
    600
  • 服务器实例规格怎么选?服务器实例规格选择指南

    在云服务或自建数据中心部署中,服务器实例规格选择直接决定系统性能、成本效率与长期可扩展性,选型不当,轻则资源浪费、运维成本攀升,重则引发服务中断、用户体验下滑,科学、系统化的规格评估是技术决策的首要环节,以下为经过生产环境验证的选型方法论,兼顾技术可行性与商业合理性:明确业务场景与性能基线(输入层)规格选择必须……

    服务器运维 2026年4月17日
    4900
  • 个人云服务器哪里买合适

    购买个人云服务器首选阿里云或腾讯云,若追求极致性价比和海外访问速度,可考虑AWS或DigitalOcean,具体选择需根据业务场景、预算及网络环境综合决定,在2026年的数字化浪潮中,个人云服务器早已不再是科技极客的专属玩具,而是内容创作者、独立开发者以及小型创业团队的基础设施,面对市场上琳琅满间的云服务商,如……

    2026年6月17日
    2900
  • 服务器怎么上传到吗?服务器文件如何上传教程

    服务器上传文件的核心在于建立可靠的连接通道并执行正确的传输指令,最主流且专业的方式是使用SSH协议下的SCP命令或SFTP工具,这能确保数据传输的安全性与稳定性,避免使用已被淘汰的FTP协议, 服务器上传前的核心准备工作在解决“服务器怎么上传到吗”这一实际问题前,必须完成基础环境配置,这是确保上传成功的基石,确……

    2026年3月25日
    9800
  • LSA在Python中是什么意思,怎么用?

    LSA(潜在语义分析)在Python中的最佳实现方式是借助scikit-learn的TruncatedSVD或gensim的lsa模型,通过矩阵分解完成文本主题抽取,是中文语义分析的基础工具,LSA的核心机制是将文档-词项矩阵通过截断奇异值分解转换为低维度潜在语义空间,这个过程完全不依赖概率假设,因此计算开销远……

    2026年7月15日
    800
  • Python pyinauto好用吗?,怎么用?

    pyinauto是Python生态中针对Windows GUI自动化最专业的原生库,它通过直接调用微软UI Automation API实现对窗口控件的精准操控,在复杂桌面应用自动化测试领域,稳定性和效率远超基于坐标模拟的同类工具,Python GUI自动化工具对比:pyinauto vs pyautogui日……

    2026年7月21日
    1000
  • 服务器查看有几个网站吗

    服务器查看有几个网站吗?答案是:可以,并且有多种专业方法可以实现,准确统计服务器上托管的网站数量是服务器管理、资源规划和安全审计的基础工作,具体方法取决于服务器的操作系统、使用的Web服务器软件(如Apache, Nginx, IIS)以及管理方式(是否使用控制面板), 核心方法:命令行探查对于Linux/Un……

    2026年2月14日
    13700
  • 国标平台服务器有哪些类型?哪个品牌性价比高

    国标平台服务器在国内指持有合法IDC/ISP/CDN牌照、完成ICP备案且通过等保测评的合规云服务器与物理服务器平台,主要包括阿里云、腾讯云、华为云等头部云厂商,以及简米科技、酷番云这类具备全网资质的老牌IDC服务商,国标平台服务器的判定标准所谓国标平台,不是某个单独的国家强制标准编号,而是从工信部监管体系出发……

    2026年9月22日
    200
  • 选择web服务器主机应考虑哪些因素,怎么选?

    选择web服务器主机,核心在于匹配业务需求、保障性能与稳定性,并确保服务商具备合法资质与可靠口碑,业务需求决定服务器配置选择主机前,先理清你的网站定位,一个小型博客和大型电商需要的资源截然不同,静态页面为主的网站对CPU要求不高,但带宽要够用,动态网站或数据库密集型应用,更看重CPU和内存,视频流媒体对存储和带……

    2026年7月29日
    500
  • 高级nat配置虚拟主机配置怎么做?虚拟主机NAT配置步骤详解

    高级NAT配置与虚拟主机配置的深度融合,是突破传统网络边界、实现公网IP高效复用与内网服务精准映射的核心引擎,更是2026年企业构建高并发、高安全云原生架构的必由之路,架构演进:为何需要高级NAT与虚拟主机联动传统网络转发的枯竭困局随着IPv4地址资源在2026年彻底枯竭,传统一对一静态NAT已无法满足企业业务……

    2026年4月28日
    6000

发表回复

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