各种商店参考:
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
有没有我可以记住的规则?因为有时我不得不间接地操纵变量,而且我不知道它是否会改变原始变量。
答案 0 :(得分:1)
变量始终存储引用。
引起混淆的关键可能是所引用的对象是否可变。在第一个示例中,a
存储对可变对象的引用。在第二个示例中,a
存储对类型为int
的不可变对象的引用。
此操作:
list1[2][0] = 5
修改存储在a
所引用列表中的引用。因此,当您通过存储在a
中的引用访问列表时,就可以看到对其所做的更改。
但是此操作:
list1[2] = 5
修改列表元素(从a
初始化),现在该元素存储对新对象的引用。但是存储在a
中的引用未更改,因此您得到了结果。