深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是计算机科学中关于对象复制概念的两个术语,主要用于描述在复制对象时对对象内部属性的处理方式。
浅拷贝(Shallow Copy)
浅拷贝指的是创建一个新的对象,并且复制原始对象的所有属性。如果属性是基本数据类型,那么复制的是值;如果属性是引用类型(如数组、对象等),那么复制的是引用,而不是引用所指向的对象本身。
在浅拷贝中,如果原始对象中的引用类型属性发生变化,这种变化会影响到拷贝后的对象,因为两者共享同一个引用。
深拷贝(Deep Copy)
深拷贝则是指创建一个新的对象,并且递归地复制原始对象的所有属性。在深拷贝中,如果属性是基本数据类型,那么复制的是值;如果属性是引用类型,那么会创建一个完全独立的副本,而不是引用。
在深拷贝中,即使原始对象中的引用类型属性发生变化,拷贝后的对象也不会受到影响,因为两者是完全独立的。
举例说明
假设有一个对象 `obj`,它包含一个基本数据类型的属性 `num` 和一个引用类型的属性 `list`:
```python
obj = {
'num': 10,
'list': [1, 2, 3]