深浅拷贝的问题是python的一个重点知识,我们来总结一下赋值与深浅拷贝的具体区别。
赋值:python中的赋值其实就是对象的引用。也就是从变量到对象的一个指针。
浅拷贝:copy.copy()只拷贝最外层的对象本身,内层的元素只是拷贝了一个引用。
深拷贝:copy.deepcopy()从外到内的元素都进行了一次拷贝,得到了一个完全独立的副本。
对于不可变的数据类型,其实并没有深浅拷贝的区别,对它的赋值深浅拷贝都是得到一个引用而已。
对于可变数据类型,赋值也就是引用,新对象与源对象有相同的地址。
浅拷贝是创建了一个新地址,它内部的元素还是对源对象的引用,如果这时改变源对象中的值,拷贝的新对象也会发生变化。这里的改变实际表现为第二层上的改变,因为第一层元素如果是不可变,也就谈不上改变了,而是舍弃旧值,赋予新值,这时已经赋值的另外引用自然也并不会跟着变化。
深拷贝是重新分配一份相同大小的新内存对源对象的一个完全复制。
深浅拷贝的实际意义更多的是在数据处理时对内存的优化上,因为内存即是效率。
https://blog.csdn.net/u014745194/article/details/70271868