亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python的id()結果怎么理解

發布時間:2021-12-17 17:41:14 來源:億速云 閱讀:220 作者:iii 欄目:大數據

本篇內容主要講解“Python的id()結果怎么理解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python的id()結果怎么理解”吧!

曾經有同學問我 id 函數的問題,為什么同樣的列表內容 id 值卻不一樣,而寫了一樣的數字 id 值也一樣,有時候就又不一樣了?

In [51]: a = [1,2,3]

In [52]: b=[1,2,3]

In [53]: id(a)
Out[53]: 140424256381640

In [54]: id(b)
Out[54]: 140424256004872

In [55]: a=1

In [56]: b=1

In [57]: id(a), id(b)
Out[57]: (4454569376, 4454569376)

In [58]: a=1000

In [59]: b=1000

In [60]: id(a), id(b)
Out[60]: (140424243121552, 140424243118928)
 

其實關于這個問題,官方文檔的常見問答里給過一段解釋:

id() 返回一個整數,該整數在對象的生命周期內保證是唯一的。因為在 CPython 中,這是對象的內存地址,所以經常發生在從內存中刪除對象之后,下一個新創建的對象被分配在內存中的相同位置。這個例子說明了這一點:

>>>id(1000)
13901272
>>>id(2000)
13901272
 

這兩個 id 屬于之前創建的不同整數對象,并在執行 id() 調用后立即刪除。要確保要檢查其 id 的對象仍處于活動狀態,請創建對該對象的另一個引用:

>>>a = 1000; b = 2000
>>>id(a)
13901272
>>>id(b)
13891296
 

這里通過內存與對象的關系解決了一部分問題,我們最上面的問題還沒有完全解決,下面請看 DE8UG 的進一步解釋。

不管是字符串,數字,列表等等其他對象,最終所有數據都要在內存里有自己的位置的。一般來說,我們只需要知道內存地址就能取到具體數據了,也就是 id 后面自己處理的內存問題,直觀看就是不同數據對象的 id 的值不一樣了。有一點不一樣的是,python 底層 c 語言代碼對一定數字范圍的地址做了緩存,這個范圍內看到的 id 值一樣,參考:https://docs.python.org/3/c-api/long.html#c.PyLong_FromLong:

The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just get back a reference to the existing object.

簡單翻譯就是:在-5 到 256 這個范圍內的整數,會直接引用已經存在的對象,所以地址相同。

下面我們分別用兩個臨界值做一個測試:

In [62]: a=-5

In [63]: b=-5

In [64]: id(a), id(b)
Out[64]: (4454569184, 4454569184)

In [65]: b=-6

In [66]: a=-6

In [67]: id(a), id(b)
Out[67]: (140424243121904, 140424243121552)

In [68]: a=256

In [69]: b=256

In [70]: id(a), id(b)
Out[70]: (4454577536, 4454577536)

In [71]: a=257

In [72]: b=257

In [73]: id(a), id(b)
Out[73]: (140424253951760, 140424253950320)

到此,相信大家對“Python的id()結果怎么理解”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁晋县| 沁阳市| 普兰店市| 璧山县| 新乡市| 秭归县| 明水县| 嘉兴市| 精河县| 封丘县| 石楼县| 岳阳市| 平邑县| 礼泉县| 神池县| 玉林市| 明星| 抚远县| 崇仁县| 祥云县| 开原市| 大余县| 鄂州市| 彭泽县| 宝山区| 平阴县| 克东县| 黔南| 施秉县| 曲靖市| 兴仁县| 巢湖市| 绥滨县| 乌鲁木齐县| 淮滨县| 崇明县| 宽甸| 卫辉市| 东乡族自治县| 工布江达县| 云和县|