Python存储变量而不是值

时间:2015-02-07 16:39:09

标签: python arrays variables

我已经编写了一段时间的python,但不知怎的,我从来没有被这个问题困扰过。每当我将变量存储在数组中时,我最终都会存储实际的变量,而不是。这就是我的意思:

var1 = [1]
arr1 = [var1]
arr1[0][0] = 2
print var1

我得到的结果是[2],即使我更改了arr1中的值而不是var1。好像var1存储在arr1中,而不是它的值,[1]。到底发生了什么?

2 个答案:

答案 0 :(得分:1)

这是因为您正在更改var1。 Python通过引用传递,而不是通过值传递,因此您正在更改对象本身。

答案 1 :(得分:0)

实际存储了一个值。分配时:

list_a = [1]

变量list_a是新列表的引用。无论何时传递它,都将该引用作为值传递。所以,

list_b = [list_a]

包含对原始列表的引用,list_b[0][0] = 2将对其进行修改。