本文实例讲述了Python浅拷贝与深拷贝用法。分享给大家供大家参考。具体分析如下:
>>> person=['name',['savings',100]] >>> hubby=person[:] >>> wifey=list(person) >>> [id(x) for x in person,hubby,wifey] [3074051788L, 3074061740L, 3074061996L] >>> [id(y) for x in person,hubby,wifey for y in x] [3074319552L,3073979916L,3074319552L,3073979916L,3074319552L,3073979916L] >>> hubby[0]='joe' >>> wifey[0]='jane' (['joe',['savings',100]],['jane',['savings',100]],['name',['savings',100]]) >>> hubby[1][1]=70 >>> hubby,wifey,person (['joe',['savings',70]],['jane',['savings',70]],['name',['savings',70]])
浅拷贝,创造了新的对象,但是它的对象引用确和被拷贝对象一致。
如果被拷贝对象的构成元素是不可变类型,则拷贝对象对这个元素的改变,实际上是创造一个新的对象。
如果被拷贝对象的构成元素是可变类型,则拷贝对象对这个元素的改变,实际上是在原对象的内存空间上修改这个内存空间里面的内容。
这样,才有hubby[1][1]=70会导致wifey,person相应值的改变。
希望本文所述对大家的Python程序设计有所帮助。
本文向大家介绍深拷贝与 浅拷贝的区别?相关面试题,主要包含被问及深拷贝与 浅拷贝的区别?时的应答技巧和注意事项,需要的朋友参考一下 浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。 深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。
主要内容:到底是浅拷贝还是深拷贝对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如: b 和 obj2 都是以拷贝的方式初始化的,具体来说,就是将 a 和 obj1 所在内存中的数据按照二进制位(Bit)复制到 b 和 obj2 所在的内存, 这种默认的拷贝行为就是 浅拷贝 ,这和调用 memcpy() 函数的效果非常类似。 对于简单的类,默认的拷贝构造函数一般就够用了,我们也没有必要再显式地定义一
浅拷贝 对于对象或数组类型,当我们将a赋值给b,然后更改b中的属性,a也会随着变化。 也就是说,a和b指向了同一块堆内存,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝。 深拷贝 那么相应的,如果给b放到新的内存中,将a的各个属性都复制到新内存里,就是深拷贝。 也就是说,当b中的属性有变化的时候,a内的属性不会发生变化。 参考链接: 深拷贝与浅拷贝的实现(一) javaScript中浅拷
浅复制 将对象的引用存储在新的内存位置。对新位置所做的更改也会反映在以前的位置上。它比深拷贝更快。 深度复制 将对象的值存储在新位置。对新位置所做的任何更改都不会反映在以前的位置上。id 用于查看对象的内存地址。当然,下面例子的地址在你的计算机上是不同的。 ## 浅拷贝 data = [1, 2, 3, 4, 5] updated_data = data updated_data.
一、引言 对象拷贝(Object Copy)就是将一个对象的属性拷贝到另一个有着相同类类型的对象中去。在程序中拷贝对象是很常见的,主要是为了在新的上下文环境中复用对象的部分或全部数据。Java中有三种类型的对象拷贝:浅拷贝(Shallow Copy)、深拷贝(Deep Copy)、延迟拷贝(Lazy Copy)。 二、浅拷贝 1、什么是浅拷贝 浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着
本文向大家介绍浅谈Python浅拷贝、深拷贝及引用机制,包括了浅谈Python浅拷贝、深拷贝及引用机制的使用技巧和注意事项,需要的朋友参考一下 这礼拜碰到一些问题,然后意识到基础知识一段时间没巩固的话,还是有遗忘的部分,还是需要温习,这里做份笔记,记录一下 前续 先简单描述下碰到的题目,要求是写出2个print的结果 可以看到,a指向了一个列表list对象,在Python中,这样的赋值语句,其实内