Python 在赋值时复制对象吗?
在 Python 中,变量的赋值不会创建对象的副本,而是创建对它们的引用。此行为可能会导致意外结果。
示例:
考虑以下代码:
dict_a = dict_b = dict_c = {} dict_c['hello'] = 'goodbye' print(dict_a) print(dict_b) print(dict_c)
意外的是,此代码会生成以下内容输出:
{'hello': 'goodbye'} {'hello': 'goodbye'} {'hello': 'goodbye'}
解释:
当您分配 dict_a = dict_b = dict_c = {} 时,您并未创建三个单独的字典。相反,您将创建一本字典并为其分配三个名称(引用)。因此,对其中一个引用所做的任何修改都会影响所有引用。
解决方案:
要创建对象的独立副本,您可以使用字典.copy() 方法或 copy.deepcopy() 函数。
使用dict.copy():
dict_a = dict_b.copy() dict_c = dict_b.copy()
使用 copy.deepcopy():
import copy dict_a = copy.deepcopy(dict_b) dict_c = copy.deepcopy(dict_b)
以上是Python 在分配对象时是否创建副本或引用?的详细内容。更多信息请关注PHP中文网其他相关文章!