首页 > 解决方案 > 可变对象在 Python 中的真正含义

问题描述

我对可变对象的真正含义感到很困惑

A=[1,3,4]
print(id(A))
A.append(1)
print(id(A))

打印输出显示相同的地址,而对于以下

A=[1,3,4]
print(id(A))
A=A+[1,2]
print(id(A))

第一件事是它不会报告错误,因为我期望它是可变的,它会执行迭代过程,另一方面,地址是不同的。

标签: python

解决方案


当你这样做

A = [1,2,3]
A.append(1)

您在适当的位置修改列表,因此不会导致其地址发生变化。另一方面,当你这样做

A = [1,2,3]
A = A + [1,2]

您创建一个临时的新对象A + [1,2],然后将现有列表重新绑定A到这个新创建的对象(即新创建的列表),从而更改其地址/ID。


推荐阅读