一. 赋值:
在 Python 中,对象的赋值就是简单的对象引用,这点和 C++不同
赋值: 完全复制,内存地址一样,如果原来的改变,后面的也会跟着变
二. 浅拷贝(shallow copy):
浅拷贝会创建新对象,其内容非原对象本身的引用,而是原对象内第一层对象的引用。浅拷贝有三种形式:切片操作、工厂函数、copy 模块中的 copy 函数。
浅拷贝: 可以理解为只拷贝表面一层列表,里面的列表没拷贝,如果原来的里面的列表改变了,拷贝的会跟着变
三. 深拷贝(deep copy):
深拷贝只有一种形式,copy 模块中的 deepcopy()函数。深拷贝和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。因此,它的时间和空间开销要高。
深拷贝:可以理解为把原件的全部复制了一边,跟原本的没有一点关系,如果原件改了,拷贝的是不会变的
四. 拷贝的注意点:
1、对于非容器类型,如数字、字符,以及其他的“原子”类型,没有拷贝一说,产生的都是原对象的引用。
2、如果元组变量值包含原子类型对象,即使采用了深拷贝,也只能得到浅拷贝。
网友评论