python指针内存重新分配
python对指针的处理让我感到困惑。例如:python指针内存重新分配,python,Python,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必须在指针位置重新分配内存。这里到底发生了什么?Python没有指针。您的代码创建了另一个变量b,它成为对a的引用,换句话说,它只是成为引用a的另一种方式。你对a做的任何事
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必须在指针位置重新分配内存。这里到底发生了什么?Python没有指针。您的代码创建了另一个变量b,它成为对a的引用,换句话说,它只是成为引用a的另一种方式。你对a做的任何事都是为了成为,因为它们都是同一件事的名字。有关详细信息,请参阅
b=a
时,实际上是要求b
引用a
的位置,而不是实际的对象
[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]
我不明白…你做了
b=a
,所以a
和b
都指向同一个内存位置?…你使用a
所做的任何更改都将与b
中的相同。请查看此链接