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

相关推荐

  • 为什么个人数字证书登录不了?个人数字证书无法登录怎么办

    个人数字证书无法登录通常由浏览器插件未正确安装、证书密码错误或系统时间不同步导致,建议优先检查“UKey驱动”是否已更新并确认插入状态,当你在办理政务业务、银行转账或企业税务申报时,突然遇到个人数字证书(俗称UKey或电子钥匙)无法登录的情况,这种焦虑感非常普遍,这不仅仅是技术故障,更可能影响你的业务办理进度……

    2026年5月30日
    5600
  • Python报警的常见设置方法有哪些?,怎么设置

    Python报警系统的本质是构建从事件捕获到通知分发的自动化管道,通过logging模块结合smtplib和webhook库,即可在30分钟内搭建一个支持多通道的生产级报警脚本,稳定运行的关键在于降噪机制和分层设计,python报警系统怎么搭建才稳定报警触发层:从异常捕获到业务指标稳定的报警系统首先需要清晰的触……

    2026年7月20日
    1000
  • 你真的了解分布式块存储接口协议吗,如何选择

    分布式块存储接口协议,简单说就是计算节点读写存储设备时遵循的通讯规则,它直接决定了分布式存储系统的性能上限和兼容性,分布式块存储接口协议有哪些?主流协议一览分布式块存储不像传统集中式存储那样只有专属协议,它需要兼容多种接口才能灵活接入不同业务,目前市面上最常见的协议包括iSCSI、FC、NVMe-oF以及RBD……

    2026年8月2日
    1200
  • Python整数类型是什么?python整数类型详解

    Python整数(int)不仅是基础数据类型,更是处理高精度计算、位运算及大数值存储的核心工具,其无上限特性与自动内存管理机制使其在算法竞赛、金融量化及底层系统开发中不可或缺,在Python的世界里,数字不仅仅是冰冷的符号,它们拥有生命和性格,与其他许多编程语言不同,Python的整数类型没有固定的位数限制,这……

    2026年7月4日
    15510
  • 个人有必要注册域名吗,个人网站域名怎么注册

    对于个人而言,注册域名并非绝对必要,但在构建个人品牌、保护知识产权及实现长期数字化资产沉淀方面,其价值远超成本,建议有长期规划的用户尽早持有,在2026年的数字生态中,互联网入口早已从单纯的搜索引擎转向了多元化的内容平台与私域流量池,许多用户持有“我只是发发日常,不需要域名”的观点,这往往忽略了域名作为互联网……

    2026年5月30日
    5700
  • 个人博客用云原生数据库规格怎么选?搭建博客需要多大配置

    个人搭建博客无需追求企业级高配,选择2核4G内存、50GB SSD云盘及基础版分布式数据库实例,即可在2026年以极低成本实现高性能、高可用的博客部署,在2026年的技术语境下,博客不再仅仅是静态HTML文件的堆砌,而是个人数字资产的核心载体,许多开发者在起步阶段容易陷入“配置焦虑”,盲目追求顶级硬件,导致成本……

    2026年5月30日
    5000
  • 服务器怎么传输文件,服务器之间快速传文件的方法

    服务器传输文件的核心在于选择合适的传输协议与工具,确保数据在传输过程中的安全性、完整性与传输效率,最专业的做法是根据文件大小、网络环境及安全等级,在SSH协议、FTP协议或Rsync同步工具之间做出取舍,并配合严格的权限控制与加密手段,对于绝大多数服务器运维场景,基于SSH协议的SCP或SFTP命令提供了安全与……

    2026年3月22日
    14900
  • 防火墙在航天航空领域的应用,为何如此关键与必要?

    防火墙技术在航天航空领域的应用,是保障飞行安全、数据通信和地面系统稳定的关键支撑,随着航天航空系统数字化、网络化程度不断提升,面对日益复杂的网络威胁,防火墙已从传统边界防护演进为深度集成于航电系统、地面控制网络及卫星通信中的核心安全组件,其作用不仅在于隔离内外网络,更在于实现精准的流量监控、威胁防御与合规管控……

    2026年2月4日
    12100
  • 服务器密码表如何管理?服务器密码表管理工具推荐

    服务器密码表管理的核心目标是:在保障安全的前提下,实现密码资产的可追溯、可审计、可自动化更新与高可用访问控制,企业若依赖Excel、纸质文档或非专业工具管理服务器凭证,将面临高泄露风险、权限混乱、运维低效、合规失败四大致命问题,以下从原则、架构、工具选型、最佳实践四方面,系统阐述专业级服务器密码表管理方案,必须……

    2026年4月14日
    6600
  • 服务器按需计费怎么算?,哪种计费模式更划算?

    服务器按需计费是一种按实际使用时长付费的弹性计费模式,核心优势在于灵活性和低成本入门,适合短期业务、弹性流量和开发测试环境,但长期稳定使用包年包月通常更划算,服务器按需计费怎么收费?计费规则详解按需计费让用户像用水电一样按秒或小时结算服务器资源,用多少算多少,用完即停,这种模式在云服务器厂商中普遍支持,比如阿里……

    服务器运维 2026年7月30日
    500

发表回复

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