什么是深拷贝什么是浅拷贝
时间: 2023-09-18 16:12:40 浏览: 43
深拷贝和浅拷贝是针对复合数据类型(如列表、字典、类实例等)进行拷贝操作时的概念。
浅拷贝是指仅仅复制了数据的引用,而没有复制数据本身。也就是说,浅拷贝得到的是一个指向原始数据的新对象,但是这个新对象和原始数据共享同一份数据。如果修改了浅拷贝得到的对象,原始数据也会受到影响。
深拷贝是指复制了一份数据的副本,而不是复制数据的引用。也就是说,深拷贝得到的是一个和原始数据完全独立的新对象,对深拷贝得到的对象进行修改不会对原始数据产生影响。
在 Python 中,可以使用 copy 模块中的 copy() 函数进行浅拷贝,使用 deepcopy() 函数进行深拷贝。例如:
```python
import copy
# 浅拷贝
a = [1, 2, [3, 4]]
b = copy.copy(a)
b[0] = 5 # 修改 b 的第一个元素
b[2][0] = 6 # 修改 b 的第三个元素的第一个元素
print(a) # 输出 [1, 2, [6, 4]]
print(b) # 输出 [5, 2, [6, 4]]
# 深拷贝
a = [1, 2, [3, 4]]
b = copy.deepcopy(a)
b[0] = 5 # 修改 b 的第一个元素
b[2][0] = 6 # 修改 b 的第三个元素的第一个元素
print(a) # 输出 [1, 2, [3, 4]]
print(b) # 输出 [5, 2, [6, 4]]
```
在上述代码中,浅拷贝得到的对象 b 和原始数据 a 共享了第三个元素,因此修改 b 的第三个元素的第一个元素也导致了原始数据 a 的修改。而深拷贝得到的对象 b 和原始数据 a 完全独立,对 b 的修改不会影响到原始数据 a。