Python 2.7:id()内置函数的奇怪行为

时间:2015-11-20 02:59:12

标签: python-2.7

id()发生了什么?我有以下代码:

a = np.asarray([1,2,3])
b = np.asarray([4,5,6])
c = np.asarray([a, b])
id_1 = id(c[0][0]) 
id_2 = id(a[0]) 
id_3, id_4 = id(c[0][0]), id(a[0])

id_1id_2不同,但id_3id_4相同。我正在使用Python 2.7。

任何人都可以解释这种行为吗? 抱歉我的英文。

1 个答案:

答案 0 :(得分:0)

来自文档:

  

CPython实现细节:这是内存中对象的地址。

这让我觉得每个构建都可以以不同的方式处理这个功能。对于Cpython,它是内存中的地址。

看起来你正在使用numpy。我猜测c实际上包含数组a和b的副本。这意味着id_1和id_2会有所不同。同样,我希望id_1 == id_3id_2 == id_4