Python学习笔记函数之copy()和deepcopy()
随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,你可能不希望
这些变动影响原来的列表或字典。要做到这一点,Python提供了名为copy的模块,其中包含copy()和deepcopy()函数。
第一个函数copy.copy(),可以用来复制列表或字典这样的可变值,而不是只复制引用。
两者的区别是copy.copy()是这复制了列表或字典的值,但是引用还是同一个。而copy.deepcopy()是产生一个新的
引用使新的变量和被复制变量引用不同。看下面的示例代码:
#------------------------------------------------我是可耻的分割线-------------------------------------------
1、copy.copy(),示例代码:
1 2 3 4 5 6 7 8 | # # -*- coding:utf-8 -*- # Autor: Li Rong Yang import copy spam = [ 'A' , 'B' , 'C' , 'D' ,[ 1 , 2 , 3 , 4 ]] cheese = copy.copy(spam) spam[ 0 ] = 42 print (spam) |
运行结果:
根据结果可以看出,使用copy.copy()函数时,cheese是复制了spam列表引用,对spam列表操作时,也会对cheese列表产生影响。这也被称为浅copy。
2、deepcopy.copy(),示例代码:
1 2 3 4 5 6 7 8 | # # -*- coding:utf-8 -*- # Autor: Li Rong Yang import copy spam = [ 'A' , 'B' , 'C' , 'D' ,[ 1 , 2 , 3 , 4 ]] cheese = copy.deepcopy(spam) #不同部分 spam[ 0 ] = 42 print (spam) |
运行结果:
根据结果可以看出,使用deepcopy()时,对spam列表操作不会对cheese列表产生影响,这是因为deepcopy()是产生一个新的引用,这样spam和cheese
是两个不同的引用所以在对spam列表操作时不会对cheese列表产生影响。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异