以python中的以下示例為例:$ python>>> id(True)140736139690832>>> id(1)140317292515368>>> ^D$ python>>> id(True)140736139690832>>> id(1)140585619968040True在這兩種情況下都相同id,但數(shù)字1不一樣。為什么會這樣?它是否在初始化python之前將某些類型分配給內(nèi)存地址,或者為什么不同項目之間的內(nèi)存地址有時相同有時不同?從文檔:CPython 實現(xiàn)細節(jié):對于 CPython,id(x) 是存儲 x 的內(nèi)存地址。
1 回答

BIG陽
TA貢獻1859條經(jīng)驗 獲得超6個贊
CPython 為小數(shù)字創(chuàng)建可重用存儲,但大概它在循環(huán)中執(zhí)行此操作,并將它們存儲到堆分配的常量數(shù)組中。另一方面,True
更像False
是“靜態(tài)全局變量”,在 Python 可執(zhí)行映像中具有固定地址。
所以這里沒有什么真正令人驚訝的。你也不應(yīng)該依賴這些細節(jié)id
——在現(xiàn)實世界的 Python 程序中很少使用。
添加回答
舉報
0/150
提交
取消