ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python的深拷贝和浅拷贝问题(转载)

2022-06-16 11:33:23  阅读:163  来源: 互联网

标签:tmp relevant Python copy blog pc 拷贝 转载


转载的原文链接:

https://blog.csdn.net/qq_42659468/article/details/118582508?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-118582508-blog-117433717.pc_relevant_antiscanv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-118582508-blog-117433717.pc_relevant_antiscanv3&utm_relevant_index=2

浅拷贝1和浅拷贝2

深拷贝

 

浅拷贝1:

直接赋值

 

a和b在内存中的位置是一样的。

 原理图:

 

 

 

浅拷贝2:

copy函数

 

 

 

 以上可以看出copy()函数产生的是新的对象,两个不同的字典指向内存中不同的位置,但是执行copy(),由于字典a的值是个列表不是基础类型数据,python不会重新存储,只是采用引用的方式指向原来的值,所以tmp中字典a的值改变了导致tmp1相应的值也改变了。

接下来看下另外一种情况:

 step1:

 

step2:

 

 step3:

 

remove了tmp1中的一个字典中的基础类型子对象,tmp没改变了。由于更改的数据类型是基础类型:int类型,所以copy过程中,python会重新分配新的内存地址,

原理图:

 

深拷贝: deepcopy()

第一步:深拷贝

 

 第二步

第三步 查看tmp内容

 

tmp没有变化

深拷贝原理图:

 

标签:tmp,relevant,Python,copy,blog,pc,拷贝,转载
来源: https://www.cnblogs.com/zzc-Andy/p/16381345.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有