网易首页 > 网易号 > 正文 申请入驻

Python:浅拷贝与深拷贝

0
分享至

Python 提供浅拷贝与深拷贝两种方式复制对象,它们在引用共享和内存占用上的差异,会影响程序的稳定性与数据安全。

通俗来说,浅拷贝像拍快照,只记录表层;深拷贝则像克隆,连内部结构也一并复制。

一、浅拷贝

浅拷贝(Shallow Copy)会创建一个新对象,但内部元素(子对象)依然是原对象的引用。

它只复制“外层容器”,不递归复制内部可变对象。

1、特点

(1)修改副本对象的外层结构(添加、删除元素)不会影响原对象。

(2)修改副本对象的内部子对象会影响原对象(因为共享引用)。

2、常用方法

列表:

new_list = old_list.copy() 
# 或 
list(old_list)

字典:

new_dict = old_dict.copy()

集合:

new_set = old_set.copy()

通用方法:使用标准库

import copy

new_obj = copy.copy(old_obj)

3、示例

import copy

a = [1, 2, [3, 4]]
b = copy.copy(a)   # 浅拷贝

a[2].append(5)     # 修改子列表对象
print(a)  # [1, 2, [3, 4, 5]]
print(b)  # [1, 2, [3, 4, 5]]  <- 子列表被共享

结果解读:

外层列表是独立的,但内部子列表依旧共享引用,所以两者的内部数据一起变化。

二、深拷贝

深拷贝(Deep Copy)会创建一个新对象,并递归地复制内部所有子对象,形成完全独立的副本。

1、特点

(1)修改新对象的任何层级都不会影响原对象。

(2)占用更多内存,执行速度比浅拷贝慢。

(3)自动处理循环引用,防止无限递归。

2、常用方法

import copy

new_obj = copy.deepcopy(old_obj)

3、示例

import copy

a = [1, 2, [3, 4]]
c = copy.deepcopy(a)  # 深拷贝

a[2].append(5)        # 修改子列表
print(a)  # [1, 2, [3, 4, 5]]
print(c)  # [1, 2, [3, 4]]  <- 完全独立

结果解读:

因为深拷贝递归复制了子对象,所以修改原对象的子列表不会影响副本。

三、 赋值 vs 浅拷贝 vs 深拷贝

1、可视化引用关系

假设有对象:

a = [1, [2, 3]]

赋值:b = a

a ──▶ [1, ──▶ [2, 3]]
b ──┘

浅拷贝:copy.copy(a)

a ──▶ [1, ──▶ [2, 3]]
b ──▶ [1, ──┘]

深拷贝:copy.deepcopy(a)

a ──▶ [1, ──▶ [2, 3]]
b ──▶ [1, ──▶ [2, 3]](新对象)

2、应用场景对比

四、补充说明

1、不可变对象(如 int、float、str、tuple 等)在浅拷贝和深拷贝下效果相同。

2、性能差异

深拷贝递归复制所有子对象,速度较慢,内存占用更高。

3、循环引用

copy.deepcopy 会自动处理循环引用,防止无限递归。

4、自定义类

如果类实现了 __copy__ 或 __deepcopy__,copy 模块会优先调用它们。

5、选择建议

在需要完全隔离数据的场景下使用深拷贝,其他情况优先浅拷贝以提高性能。

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
深圳一地铁口“摩的”扎堆揽客,网友吐槽:家都进不去!

深圳一地铁口“摩的”扎堆揽客,网友吐槽:家都进不去!

极目新闻
2025-09-16 20:09:53
清代知县带7人上任,被吃掉5人!古代的老虎能泛滥到什么程度?

清代知县带7人上任,被吃掉5人!古代的老虎能泛滥到什么程度?

收藏大视界
2025-09-10 18:10:03
这个波斯人的名字,成了无数程序员的梦魇!

这个波斯人的名字,成了无数程序员的梦魇!

码农翻身
2025-09-16 08:59:29
曾经溢价3万,如今价格暴跌,二手小米YU7害惨黄牛

曾经溢价3万,如今价格暴跌,二手小米YU7害惨黄牛

优视汽车
2025-09-14 10:46:10
15年后《斯巴达克斯》演员现状,蛇蝎美人变导演,谁是人生赢家?

15年后《斯巴达克斯》演员现状,蛇蝎美人变导演,谁是人生赢家?

半糖甜而不腻
2025-09-16 09:25:54
打脸来得太快!石平太郎在华资产被曝,上千万资产全被冻结

打脸来得太快!石平太郎在华资产被曝,上千万资产全被冻结

书雁飞史oh
2025-09-16 18:49:22
战术板:阿莫林的战术为何无法在曼联奏效?

战术板:阿莫林的战术为何无法在曼联奏效?

奥拜尔
2025-09-16 16:07:59
“治港败类”曾荫权:治理香港7年,为何却在卸任后,获刑20个月

“治港败类”曾荫权:治理香港7年,为何却在卸任后,获刑20个月

梁讯
2025-09-14 19:15:18
刘强东“请客”菜单:一共15道菜,现场做“黄狗猪头肉”,还有品鉴茅台

刘强东“请客”菜单:一共15道菜,现场做“黄狗猪头肉”,还有品鉴茅台

红星资本局
2025-09-16 20:49:07
火爆!广州11区民政局均已约满

火爆!广州11区民政局均已约满

鲁中晨报
2025-09-16 10:59:04
高速能跑140km/小时?网传新政引热议

高速能跑140km/小时?网传新政引热议

大象新闻
2025-09-16 12:47:03
重大突破!英国发明治秃神器,20天长出90%毛发!

重大突破!英国发明治秃神器,20天长出90%毛发!

趣味探索
2025-07-11 23:47:13
以色列猛攻加沙城 多国呼吁中止其联合国会员国资格

以色列猛攻加沙城 多国呼吁中止其联合国会员国资格

环球网资讯
2025-09-16 14:39:14
《灼灼韶华》直到褚韶华一刀杀陈二顺,才知,她为何爬上军阀的床

《灼灼韶华》直到褚韶华一刀杀陈二顺,才知,她为何爬上军阀的床

宇林网络
2025-09-14 18:09:36
陷入癫狂:美国老罗引发全行业大清洗

陷入癫狂:美国老罗引发全行业大清洗

美第奇效应
2025-09-14 23:46:52
84-77赢澳洲豪强!徐杰34分11板6助,杜锋大赞2人,赛后数据出炉

84-77赢澳洲豪强!徐杰34分11板6助,杜锋大赞2人,赛后数据出炉

老吴说体育
2025-09-17 00:29:25
惊爆!张雨绮直播卖内裤引热议,是她穿过的内裤?网友:真不尴尬吗?

惊爆!张雨绮直播卖内裤引热议,是她穿过的内裤?网友:真不尴尬吗?

八卦王者
2025-09-16 14:29:35
布莱德・皮特以 Cliff Booth 身份重返大银幕 黄色工装装尽显范儿

布莱德・皮特以 Cliff Booth 身份重返大银幕 黄色工装装尽显范儿

述家娱记
2025-09-16 12:13:22
惊!任贤齐东莞街头吃濑粉被无视!老板娘:明星能当饭吃?

惊!任贤齐东莞街头吃濑粉被无视!老板娘:明星能当饭吃?

椰青美食分享
2025-09-16 00:55:47
“嘎子谢孟伟”公开道歉!警方已介入

“嘎子谢孟伟”公开道歉!警方已介入

第一财经资讯
2025-09-15 23:18:25
2025-09-17 01:11:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1523文章数 62关注度
往期回顾 全部

科技要闻

2025款Apple Watch全系怎么选?

头条要闻

清华学霸小红书晒1.67亿元年薪被查 美司法部:他在逃

头条要闻

清华学霸小红书晒1.67亿元年薪被查 美司法部:他在逃

体育要闻

2022:勇士归来,库里的第四个冠军

娱乐要闻

李小璐母亲:女儿嫁给贾乃亮我好后悔

财经要闻

扩大服务消费 9部门提出5方面19条举措

汽车要闻

智能体豪华旅行车 享界S9T30.98万元起售

态度原创

家居
房产
本地
健康
公开课

家居要闻

江南秘境 理想生活模样

房产要闻

当海口书包房卷向「未来」,这里的孩子和房价,都在高速超车!

本地新闻

云游忻州 | 慢时光!老街逛吃,烟火气超上头~

内分泌科专家破解身高八大谣言

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版