python的浅拷贝与深拷贝有什么区别-创新互联
本文以python的数据拷贝为例,为大家分析浅拷贝与深拷贝的区别,阅读完整文相信大家对python的浅拷贝与深拷贝有了一定的认识。
创新互联建站主要从事做网站、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务西夏,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108一.普通的变量赋值
我们平常使用的变量赋值就是浅拷贝,即两个变量共享同一个内存块,相同的内存地址,一旦值发生改变,另外一个变量的值也会跟随着一起变化,演示代码如下:
1 2 3 4 5 6 7 8 9 10 |
输出结果:
1 2 3 4 |
注意:常规的变量赋值共享一个内存块,内存地址相同,一旦值发生改变,共享同一个内存地址的所有变量值都会发生改变,可以直接通过内置函数id()对比下内存地址即可!
二.浅拷贝和深拷贝
在python开发过程中,有些时候对于上面的情况并不是我们想要的,我们更加希望对赋值后的变量做修改并不影响原始变量的值,如何实现呢?这里就需要介绍一下copy模块:
copy.copy() – 浅拷贝,重新分配内存,只拷贝父对象,不会拷贝对象的内部的子对象;
copy.deepcopy() – 深拷贝,重新分配内存,拷贝对象及其所有子对象;
1.浅拷贝copy()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
输出结果:
1 2 |
2.深拷贝deepcopy()
1 2 3 4 5 6 7 |
输出结果:
1 2 |
3.浅拷贝和深拷贝区别
对于常规的字典或者列表使用copy模块的深拷贝或者浅拷贝,两者并没有区别!如果字典或者列表中还有包含有子类的话,使用copy模块的深拷贝和浅拷贝的话,结果就大不相同了:
copy.copy() — 重新分配内存,只拷贝父对象,不会拷贝对象内部的子对象;
copy.deepcopy() — 重新分配内存,拷贝对象及其所有子对象;
示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
输出结果:
1 2 3 4 5 6 7 |
以上就是python的浅拷贝与深拷贝的区别,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注创新互联行业资讯!
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文标题:python的浅拷贝与深拷贝有什么区别-创新互联
本文来源:http://azwzsj.com/article/jhsge.html