2015-11-20 37 views
-1

什麼用id()發生了什麼?我有以下代碼: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_1和​​是不同的,但id_3id_4是一樣的。我正在使用Python 2.7。

任何人都可以解釋這種現象? 對不起,我的英文。

+0

我得到了所有4(CPython 3.5 numpy 1.9.3)相同的ID。你有什麼不同? – strubbly

回答

0

從文檔:

CPython的實現細節:這是在存儲器中的對象的地址。

這讓我覺得,每個版本可以不同的方式處理這個功能。對於Cpython來說,它是內存中的地址。

看起來你正在使用numpy的。我猜c實際上包含數組a和b的副本。這意味着id_1和id_2會有所不同。同樣,我期望id_1 == id_3id_2 == id_4