字典的copy()函数创建浅拷贝,新字典共享原字典中的可变对象:my_dict = {'a': 1, 'b': [2, 3], 'c': {'x': 4}}; new_dict = my_dict.copy(); 修改my_dict['b']会影响new_dict,因列表是同一对象。
在 Python3 中,字典的 copy() 函数用于创建一个字典的浅拷贝。这意味着新字典会包含原字典中所有键值对的副本,但这些值如果为可变对象(如列表或字典),则新旧字典仍会共享这些对象。
基本用法
使用 copy() 方法非常简单,只需在字典后调用该方法即可:
my_dict = {'a': 1, 'b': [2, 3], 'c': {'x': 4}}new_dict = my_dict.copy()
print(new_dict) # 输出: {'a': 1, 'b': [2, 3], 'c': {'x': 4}}
浅拷贝的特点
copy() 创建的是浅拷贝,因此当原字典中的值是可变类型时,修改会影响副本,反之亦然:
my_dict['b'].append(5)print(my_dict) # {'a': 1, 'b': [2, 3, 5], 'c': {'x': 4}}
print(new_dict) # {'a': 1, 'b': [2, 3, 5], 'c': {'x': 4}} → 副本也变了
可以看到,对列表的修改同时反映在原字典和副本中,因为它们共享同一个列表对象。
何时使用 copy()
当你需要一个独立的字典结构,但不担心嵌套的可变对象被共享时,可以使用 copy()。常见场景包括:
- 避免直接修改原始配置字典
- 临时修改数据并保留原数据备份
- 函数传参时防止意外更改原字典
若需完全独立的副本(包括嵌套对象),应使用 import copy 模块中的 copy.deepcopy()。
基本上就这些,copy() 是日常开发中很实用的小工具,理解它的浅拷贝特性就能避免多数陷阱。

因列表是同一对象。






