课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在上文中给大家简单介绍了python编程入门需要学习的一些基础知识,而本文我们就一起来了解一下,python编程深拷贝和浅拷贝的区别。
深拷贝出来的对象就是完完全全的新对象,不管是对象本身(id),还是对象中包含的子对象,都和原始对象不一样;
浅拷贝出来的对象就是外新内旧的对象,对象本身(id)和原始对象完全不同,但是子对象和原始对象的子对象是一样的。
深拷贝是将对象本身(A)复制给另一个对象(B)。这意味着如果对对象本身或者子对象进行更改时不会影响原对象。在Python中,我们使用deepcopy()函数进行深拷贝。
浅拷贝是将对象的引用复制给另一个对象。因此,如果我们在子对象中进行更改,则会影响原对象;但对对象本身修改并不会影响原始对象。使用copy()函数进行浅拷贝。
a为原始对象,包含了四个元素,三个int和一个list;b为直接(a)赋值来的结果,c为浅拷贝(a)来的结果,d为深拷贝(a)来的结果。
然后我们对a列表进行了修改,先添加了一个int数据(4),然后对a的四个元素(list)进行了修改,给四个元素列表添加了一个新元素‘c’,然后我们依次输出a、b、c、d。
通过输出结果我们可以发现直接赋值来的b和a是完全一样的,同步修改了所有,说明直接赋值来的新变量,不管是对象本身,还是对象中包含的子对象,都是一样的、完全相同;
通过浅拷贝来的对象c只是子对象的修改和a保持了一致,对象本身的修改并没有生效,说明浅拷贝是将对象本身的引用复制给新对象,但是包含的子对象还是和之前一致的;
通过深拷贝来的对象完全没有变化,说明深拷贝来的对象本身以及包含的子对象都完完全全是新的,和原对象没有一点关系。
那么深拷贝和浅拷贝一般应用在那些地方呢?
从数据处理的角度来看,可以应用在以下场景:
1)我们处理中间结果时往往不想对原始数据进行任何修改,所以这个时候可以使用深拷贝;
2)如果我们只是想新增一个辅助列(只涉及对父对象的修改),那这时我们可以使用浅拷贝,节约系统内存。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。