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

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

DDD
发布: 2024-12-16 18:50:15
原创
162 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板