python中深浅拷贝
时间: 2024-01-06 10:25:46 浏览: 95
Python中的深拷贝和浅拷贝详解
深拷贝和浅拷贝是Python中用于复制对象的两种方式。
浅拷贝是指创建一个新的对象,该对象与原始对象共享内存中的数据。换句话说,浅拷贝只复制了对象本身,而没有复制对象内部的元素。当修改原始对象时,浅拷贝的对象也会受到影响。
深拷贝是指创建一个新的对象,并且递归地复制原始对象及其所有内部元素。换句话说,深拷贝不仅复制了对象本身,还复制了对象内部的所有元素。因此,当修改原始对象时,深拷贝的对象不会受到影响。
下面是一个示例,演示了Python中深拷贝和浅拷贝的区别:
```python
import copy# 浅拷贝示例
list1 = [1, 2, [3, 4]]
list2 = copy.copy(list1)
# 修改原始对象
list1[0] = 5
list1[].append(5)
print(list1) # 输出: [5, 2, [3, 4, 5]]
print(list2) # 输出: [1, 2, [3, 4, 5]]
# 深拷贝示例
list3 = copy.deepcopy(list1)
# 修改原始对象
list1[0] = 10
list1[2].append(6)
print(list1) # 输出: [10, 2, [3, 4, 5, 6]]
print(list3) # 输出: [5, 2, [3, 4, 5]]
```
在上面的示例中,我们使用`copy`模块中的`copy`函数进行浅拷贝,使用`deepcopy`函数进行深拷贝。可以看到,浅拷贝的对象`list2`与原始对象`list1`共享内部列表的引用,因此修改原始对象的内部列表时,浅拷贝的对象也会受到影响。而深拷贝的对象`list3`完全独立于原始对象,修改原始对象不会影响深拷贝的对象。
阅读全文