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

相关推荐

  • 服务器紧固件有哪些常见规格,怎么选型号?

    服务器紧固件按使用位置可分为机柜安装类、组件固定类、理线固定类三大类,常用规格集中在M5、M6、#6-32、#10-32,选型关键是匹配机柜方孔和组件螺纹,而不是单纯看强度,服务器紧固件的三大类:按安装位置区分服务器紧固件不是单一螺丝,而是一组不同位置使用的零件,先按位置拆开,才不容易买错,机柜安装类:机柜螺丝……

    2026年9月18日
    000
  • 分布式消息服务选型需要注意什么?,哪个好

    如果你正在构建一个高并发的分布式系统,那么分布式消息服务就是你的系统解耦和流量削峰的最佳助手,但选型时必须结合业务场景、性能需求和运维成本来综合考虑,什么场景下需要分布式消息服务?分布式消息服务的核心价值在于让不同组件之间“悄悄说话”,而不是互相等待,当你的系统出现以下情况,就该考虑引入它了,异步解耦:订单系统……

    2026年7月24日
    1600
  • 可靠的DNS服务器地址有哪些?,DNS服务器地址怎么设置?

    靠谱的DNS服务器地址首选公共大厂,国内用户优先考虑阿里DNS(223.5.5.5)、腾讯DNSPod(119.29.29.29)和114DNS(114.114.114.114),追求隐私保护可选NextDNS,海外访问则推荐Cloudflare(1.1.1.1)和Google(8.8.8.8),这个组合兼顾了……

    2026年8月23日
    1100
  • 服务器指纹攻击是什么?如何防范服务器指纹识别攻击?

    服务器指纹攻击是网络安全防御体系中极具隐蔽性的威胁源头,其核心危害在于攻击者能够通过识别服务器特征,精准定位目标系统漏洞,防御此类攻击的根本策略,在于实施深度的信息混淆与最小化权限管理,切断攻击者的侦察链条,将系统暴露面降至最低,服务器指纹的本质与攻击原理服务器指纹,即服务器在响应外部请求时所表现出的独特特征集……

    2026年3月14日
    14000
  • 服务器有发票吗,购买服务器怎么开具正规发票?

    正规渠道采购的服务器产品,无论是云服务器还是物理服务器,绝对提供正规发票,这是企业进行商业合规经营、财务审计以及税务抵扣的必要凭证,发票不仅是交易合法的证明,更是资产入账和成本核算的核心依据,企业在采购前确认供应商是否具备开票能力,是评估其资质的重要环节, 服务器发票的主要类型及税务影响在服务器采购领域,发票主……

    2026年2月22日
    16700
  • 服务器租用游戏怎么选才靠谱,一个月多少钱划算?

    选择游戏服务器租用,核心是匹配游戏类型、玩家规模和预算,高防和低延迟是硬指标,入门配置月费通常在300-800元之间,中高端则需要数千元,游戏服务器租用需要关注哪些配置CPU和内存:游戏逻辑的承重墙游戏服务器对CPU主频和核心数要求较高,大多数中小型游戏需要4核起步,大型多人在线场景建议8核以上,内存方面,8G……

    2026年8月6日
    700
  • 个人网站云服务器怎么配?云服务器配置推荐

    个人网站云服务器配置的核心在于根据业务阶段平衡性能与成本,初期推荐2核2G起步,成熟期建议4核8G并配合CDN加速,切勿盲目追求高配,选择云服务器时,很多人容易陷入“越贵越好”的误区,对于个人博客、作品集或小型展示站,资源浪费比配置不足更常见,我们需要从实际流量、技术栈和预算三个维度来拆解配置逻辑,找到那个“刚……

    2026年5月26日
    6400
  • 服务器未发送数据导致网页无法加载怎么办?解决方法一网打尽!

    服务器未发送任何数据因此无法加载该网页“服务器未发送任何数据因此无法加载该网页”或类似提示(如“ERR_EMPTY_RESPONSE”)意味着您的浏览器成功连接到了目标网站的服务器IP地址,并发送了请求,但在合理的时间内,服务器完全没有返回任何数据(包括错误信息或空响应)给浏览器,这通常指向服务器端、网络路径或……

    2026年2月14日
    15400
  • 花生壳域名无法解析怎么办呢?,是什么原因

    花生壳域名无法解析,核心原因集中在客户端未运行、域名已过期、网络环境变动和路由器未做端口映射这四个方面,按顺序排查即可解决,排查前的准备工作:先确认账号与域名状态域名解析失败的第一道关卡往往不在技术设置,而在账号本身,检查花生壳服务是否到期花生壳的免费域名和付费套餐都有使用期限,登录花生壳管理后台,查看域名列表……

    2026年9月16日
    300
  • 个人版云桌面好用吗?个人版云桌面哪个牌子好

    个人版云桌面并非简单的远程连接工具,而是将你的电脑硬件、存储和操作系统完全迁移至云端,实现随时随地通过任意设备无缝访问个人工作环境的数字化解决方案,想象一下,你不需要再担心笔记本电池耗尽、硬盘损坏或者系统崩溃,只要有一台能上网的设备,哪怕是老旧的平板或借来的公用电脑,你都能瞬间回到那个熟悉的、配置了所有专业软件……

    服务器运维 2026年5月27日
    3700

发表回复

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