IC基础知识(五)SV中浅拷贝和深拷贝的区别

本文介绍了SV中浅拷贝和深拷贝的区别。浅拷贝通过copy()或list.copy()创建新对象,但对包含引用的对象进行修改仍会影响原对象。深拷贝通过deepcopy()不仅复制对象,还复制引用,确保新旧对象完全分离。通过Python Tutor的可视化分析,展示了浅拷贝和深拷贝在处理包含列表的列表时的不同行为,强调了深拷贝在防止意外修改原对象的重要性。
摘要由CSDN通过智能技术生成

目录

概述

详解

微信公众号


概述

  1.   浅拷贝可以使用列表自带的copy()函数(如list.copy()),或者使用copy模块的copy()函数。深拷贝只能使用copy模块的deepcopy(),所以使用前要导入:from copy import deepcopy

  2.   如果拷贝的对象里的元素只有值,没有引用,那浅拷贝和深拷贝没有差别,都会将原有对象复制一份,产生一个新对象,对新对象里的值进行修改不会影响原有对象,新对象和原对象完全分离开。

  3.   如果拷贝的对象里的元素包含引用(像一个列表里储存着另一个列表,存的就是另一个列表的引用),那浅拷贝和深拷贝是不同的,浅拷贝虽然将原有对象复制一份,但是依然保存的是引用,所以对新对象里的引用里的值进行修改,依然会改变原对象里的列表的值,新对象和原对象完全分离开并没有完全分离开。而深拷贝则不同,它会将原对象里的引用也新创建一个,即新建一个列表,然后放的是新列表的引用,这样就可以将新对象和原对象完全分离开。

详解

    首先就上面第二点进行讲解,这里用到一个工具,Python Tutor(http://www.pythontutor.com)是一个对 Python 运行原理进行可视化分析的工具。如下截图。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值