深拷贝和浅拷贝
1. 浅拷贝
- 浅拷贝是对于一个对象的顶层拷贝
通俗的理解是:拷贝了引用,并没有拷贝内容
最常用的赋值语句其实就是浅拷贝。
copy模块中的copy.copy是浅拷贝
这里需要注意,e拷贝的是c里面所有的东西,在下面的例子中,c里面是两个指向(a和b),因此e拷贝了c里面的两个指向,而没有拷贝c的地址。也就是说浅拷贝是顶层拷贝。
2. 深拷贝
- 深拷贝是对于一个对象所有层次的拷贝(递归)
深拷贝不仅拷贝了指向,同时也重新开辟了内存空间,把指向的内容拷贝到了新的内存空间中。
---------------------------------------------------------------------------------------------------------------------------
注意:如果copy.copy和copy.deepcopy拷贝的是元组,并且元组内部的元素也是不可变的,那么它不会进行浅拷贝,仅仅是指向。原因:因为元组是不可变类型,那么意味着数据一定不能修改。和''=''一样。
注意:如果copy.copy和copy.deepcopy拷贝的是元组,但是元组内部的元素是可变的,那么copy.copy不会进行浅拷贝,仅仅是指向。而copy.deepcopy会进行深拷贝。
总而言之,如果拷贝的内容都是不可变类型的,那么copy.copy和copy.deepcopy一样,如果拷贝的内容中存在可变类型,那么copy.deepcopy就会进行递归拷贝。
-----------------------------------------------------------------------------------------------------------------
如果一个变量等于另一个变量的切片,那么也是浅拷贝
--------------------成功,肯定是需要一点一滴积累的--------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix