我对python处理指针感到困惑。例如:
a=[3,4,5]
b=a
a[0]=10
print a
返回[10,4,5]
以上表示b和a是指向同一位置的指针。问题是如果我们说:
a[0]='some other type'
b现在等于['其他类型',4,5]
这不是我期望的行为,因为python必须在指针位置重新分配内存,因为类型的大小增加。到底发生了什么?
答案 0 :(得分:4)
执行b = a
时,您实际上要求b
引用a
的位置,而不是实际的object
[3, 4, 5]
进一步解释:
In [1]: a = [1, 2]
In [2]: b = a # b & a point to same list object [1, 2]
In [3]: b[0] = 9 # As list is mutable the original list is altered & since a is referring to the same list location, now a also changes
In [4]: print a
[9, 2]
In [5]: print b
[9, 2]
答案 1 :(得分:0)
Python没有指针。你的代码创建了另一个变量b,它变成了对a的引用,换句话说,它只是变成了引用a的另一种方式。你对a做的任何事情都是这样做的,因为它们都是同一个东西的名字。有关更多信息,请参阅python variables are pointers?。