首页 >后端开发 >Python教程 >Python 在分配对象时是否创建副本或引用?

Python 在分配对象时是否创建副本或引用?

DDD
DDD原创
2024-12-16 18:50:15225浏览

Does Python Create Copies or References When Assigning Objects?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn