Python深拷贝浅拷贝
浅拷贝(copy)
- 浅拷贝是对于一个对象的顶层拷贝
通俗的理解是:拷贝了引用,并没有拷贝内容
- 浅拷贝是对于一个对象的顶层拷贝
深拷贝(deepcopy)
- 深拷贝是对于一个对象所有层次的拷贝(递归),会开辟一个内存空间存储拷贝内容。将对象中多有层次都拷贝一份,a改变时,d中的a不会改变。
- 深拷贝是对于一个对象所有层次的拷贝(递归),会开辟一个内存空间存储拷贝内容。将对象中多有层次都拷贝一份,a改变时,d中的a不会改变。
注意点
- 浅拷贝对不可变类型和可变类型的copy不同
- copy.copy对于可变类型,会进行浅拷贝
- copy.copy对于不可变类型,不会拷贝,仅仅是指向
浅拷贝和深拷贝的不同点
如果用copy.copy、deepcopy对一个全部都是不可变类型的数据进行拷贝,那么他们的结果相同,都是引用指向
如果拷贝的是一个拥有 可变类型 的不可变类型的数据,即元组是最顶层,那么deepcopy依然是深拷贝而copy.copy还是指向
赋值语句在python是增加一个引用
字符串切片与copy.copy一样属于浅拷贝
字典中的拷贝也是引用指向