Python中的`copy`包提供了一些函数,可以用于复制(复制)对象。其中最常用的函数是`copy()`和`deepcopy()`。
`copy()`函数用于浅复制一个对象,即复制对象本身,但不复制对象中包含的可变对象。这意味着,如果原始对象包含其他对象的引用,那么复制后的新对象也将包含对相同引用的引用。例如,如果原始对象是一个列表,那么复制后的新对象也将是一个列表,但仍将引用原始列表中的相同元素。
`deepcopy()`函数用于深复制一个对象,即复制对象本身和对象中包含的所有可变对象。这意味着,如果原始对象包含其他对象的引用,那么复制后的新对象将包含对新对象的引用。例如,如果原始对象是一个列表,那么复制后的新对象将是一个全新的列表,其中包含与原始列表相同但是全新的元素。
以下是一个简单的示例,展示如何使用`copy`包中的`copy()`和`deepcopy()`函数:
```python
import copy
# Define a list containing mutable object (list)
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# Shallow copy the original list
shallow_copy = copy.copy(original_list)
# Deep copy the original list
deep_copy = copy.deepcopy(original_list)
# Modify the first element of the original list
original_list[0][0] = 0
# Print the original list and the copies
print("Original List: ", original_list)
print("Shallow Copy: ", shallow_copy)
print("Deep Copy: ", deep_copy)
```
输出结果:
```
Original List: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]
Shallow Copy: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]
Deep Copy: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
```
可以看到,修改原始列表的第一个元素也会影响到浅复制,但不会影响深复制。