赋值、浅拷贝和深拷贝的区别?

 

 

一、赋值:

在 Python 中,对象的赋值就是简单的对象引用,这点和 C++不同

 

二、浅拷贝(shallow copy):

 

浅拷贝会创建新对象,其内容非原对象本身的引用,而是原对象内第一层对象的引用。浅拷贝有三种形式:切片操作、工厂函数、copy 模块中的 copy 函数。

三、深拷贝(deep copy):

深拷贝只有一种形式,copy 模块中的 deepcopy()函数。深拷贝和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。因此,它的时间和空间开销要高。

四、拷贝的注意点:

 

1、对于非容器类型,如数字、字符,以及其他的“原子”类型,没有拷贝一说,产生的都是原对象的引用。
2、如果元组变量值包含原子类型对象,即使采用了深拷贝,也只能得到浅拷贝。

 

posted @ 2018-08-30 11:14  lvmenghui001  阅读(1764)  评论(0编辑  收藏  举报