python - 可变对象在 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))
第一件事是它不会报告错误,因为我期望它是可变的,它会执行迭代过程,另一方面,地址是不同的。
解决方案
当你这样做
A = [1,2,3]
A.append(1)
您在适当的位置修改列表,因此不会导致其地址发生变化。另一方面,当你这样做
A = [1,2,3]
A = A + [1,2]
您创建一个临时的新对象A + [1,2]
,然后将现有列表重新绑定A
到这个新创建的对象(即新创建的列表),从而更改其地址/ID。
推荐阅读
- bash - jenkins 重启远程服务代理后卡住了
- angular - NX Angular Storybook 未构建
- ansible - 如何比较不同文件上的变量ansible
- grafana - 有没有办法以编程方式更改查询中执行的功能?
- angular - Angular Karma/Jesmine spyOn 创建类型“x”不能分配给“从不”类型的参数
- reactjs - 有没有办法在显示另一个组件之前检查特定的底部选项卡是否处于活动状态?
- asp.net-mvc - 是否可以在 ASP.NET MVC 应用程序中将用户添加到 Active Directory?
- reactjs - 如何使用 Jest 模拟 React `@material-ui/icons` 中的所有图标?
- amazon-web-services - Kubectl apply 无法创建 EBS 卷持久卷声明
- ios - iOS Firebase 检测到事件中的崩溃,但无法识别 Crashlytics 部分中的应用程序