变量何时存储值,何时存储引用?

时间:2019-11-06 22:55:14

标签: 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

有没有我可以记住的规则?因为有时我不得不间接地操纵变量,而且我不知道它是否会改变原始变量。

1 个答案:

答案 0 :(得分:1)

变量始终存储引用。

引起混淆的关键可能是所引用的对象是否可变。在第一个示例中,a存储对可变对象的引用。在第二个示例中,a存储对类型为int的不可变对象的引用。

此操作:

list1[2][0] = 5

修改存储在a所引用列表中的引用。因此,当您通过存储在a中的引用访问列表时,就可以看到对其所做的更改。

但是此操作:

list1[2] = 5

修改列表元素(从a初始化),现在该元素存储对新对象的引用。但是存储在a中的引用未更改,因此您得到了结果。