我試圖在互聯網上搜索這個,但我無法找到一個好的答案。有人說id()回傳記憶體地址,但有人說id()不是記憶體地址。
在C編程語言中,有一個指標來顯示記憶體地址,但我不知道Python在這種情況下是如何作業的。
任何人都可以幫助我了解 Python 如何將資料保存在記憶體中?
uj5u.com熱心網友回復:
對于學習python的人來說,這是一個流行的問題。
答案是python沒有指標而是使用id()。而 id() 在 CPython 解釋器中回傳 C 語言的記憶體地址。
python中的一切都是一個python物件,id()是python物件的標識。寫python代碼的時候需要了解id()是怎么作業的,不然會浪費很多記憶體空間。順便說一下,下圖展示了 id() 在 python 中如何作業的一些真實示例。
在 CPython 解釋器中,id() 回傳 PyObject 的 C 記憶體地址值。即使對于 True/False 值,python 中的所有內容都是 python 物件。
python中id()的描述是
回傳物件的“身份”。這是一個整數,保證在此物件的生命周期內是唯一且恒定的。生命周期不重疊的兩個物件可能具有相同的 id() 值。
Python 中有很多解釋器,它們可以實作 id()。我們知道最流行的是 CPython,它的源代碼在這里

CPython 是C 中的解釋器。在源代碼中,每個python 物件都是C 中的PyObject,id() 將回傳這個PyObject 的C 記憶體地址。但請記住,這并不意味著解釋器應該回傳 id() 的記憶體地址。它只是CPython解釋器做的,它對python的規范很滿意。
So, that's why I say python has no pointer but id(). And CPython interpreter returns the C memory address of PyObject as the value of id().
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/324915.html
下一篇:LINUX中的檔案搜索
