python - 变量何时存储值,何时存储引用?
问题描述
变量存储参考:
a = [3, 4]
list1 = [1, 2, a]
list1[2][0]=5
print(list1)
print(a)
输出:
[1, 2, [5, 4]]
[5, 4]
变量存储值:
a = 3
list1 = [1, 2, a]
list1[2]=5
print(list1)
print(a)
输出:
[1, 2, 5]
3
有没有我能记住的规则?因为有时我必须间接操纵变量,我不知道它是否会改变原始变量。
解决方案
变量总是存储一个引用。
混淆的关键可能是引用的对象是否可变。在您的第一个示例a
中,存储对可变列表对象的引用。在第二个示例a
中,存储了对类型不可变对象的引用int
。
所以这个操作:
list1[2][0] = 5
修改存储在引用的列表中的a
引用。因此,当您通过存储在a
.
但是这个操作:
list1[2] = 5
修改列表元素(从 初始化a
),现在该元素存储对新对象的引用。但是存储在其中的引用a
没有改变,因此你得到了结果。
推荐阅读
- android - 如何从房间数据库中的位置对象中保存和检索纬度和经度
- tableau-api - 在画面中的两个不同点之间画一条胡须
- php - 如何在 Symfony 4 中使用简单功能?
- matlab - Matlab Simscape vs Simulink vs PDE-Toolbox/Ansys/Comsol
- swift - 在 Swift 中添加两个 [String : Int] 字典的值
- python-3.x - 从 Windows 搜索窗口运行 Python 批处理文件 - 为什么我不能以这种方式启动使用 selenium 和 Firefox 的程序?
- ember.js - 如何在 Ember.js 中迭代保存子记录?
- ios - 在上下文中图像旋转有什么问题?
- c# - 在 .NET 实体框架中调用第二次 SaveChanges 时出现 InvalidOperationException
- mysql - 仅在 COUNT 中考虑特定 ID