浅拷贝与深拷贝
这里以字典为示例展示Python中浅拷贝与深拷贝各自的使用场景。
浅拷贝
在Python中,使用dict.copy()方法创建的是浅拷贝,这意味着新字典(b)中的可变对象(如列表或字典)仍然引用原始字典(a)中的相同对象。但对于不可变类型(如整数、浮点数、字符串等),修改新字典中的值不会影响原始字典。
代码示例
a = {'a': 1, 'b': 2, 'c': 3}
b = a.copy()
b['a'] = 4
print(a) # 输出: {'a': 1, 'b': 2, 'c': 3}
print(b) # 输出: {'a': 4, 'b': 2, 'c': 3}
深拷贝
在Python中,要创建一个字典的深拷贝,你可以使用copy模块中的deepcopy函数。深拷贝会创建一个全新的对象,并且递归地复制原始对象中包含的所有可变对象。这样,即使原始对象和新对象中有可变对象,修改一个对象也不会影响另一个对象。
import copy
# 原始字典,包含一个列表作为值
a = {'a': [1, 2, 3], 'b': 2, 'c': 3}
# 使用deepcopy创建深拷贝
b = copy.deepcopy(a)
# 修改深拷贝中的列表
b['a'][0] = 100
# 打印原始字典和深拷贝字典
print(a) # 输出: {'a': [1, 2, 3], 'b': 2, 'c': 3}
print(b) # 输出: {'a': [100, 2, 3], 'b': 2, 'c': 3}