在浅拷贝和深拷贝中,我对对象是如何被引用的感到困惑。解决这个问题的方法是,在深拷贝中使用copy.deepcopy()函数可以创建一个完全独立的副本,而在浅拷贝中使用copy.copy()函数可以创建一个只有顶层对象是独立的副本,其内部嵌套的对象仍然是共享的。例如:
import copy
# list with nested objects
original_list = [1, 2, [3, 4]]
shallow_copy = copy.copy(original_list)
deep_copy = copy.deepcopy(original_list)
# modify nested object in original_list
original_list[2][0] = 5
print("Original List:", original_list)
print("Shallow Copy:", shallow_copy)
print("Deep Copy:", deep_copy)
输出:
Original List: [1, 2, [5, 4]]
Shallow Copy: [1, 2, [5, 4]]
Deep Copy: [1, 2, [3, 4]]
可以看到,当我们修改原始列表中嵌套的对象时,它会影响浅拷贝,但不会影响深拷贝。