a = 1b = 1id(a) == id(b) # True以下是Python優化內存消耗并重用兩個變量的內存。c = 1.45d = 1.45id(c) == id(d) # False - Why ?在Python的情況下,不使用這種優化。為什么?float
1 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
CPython(參考解釋器)作為實現細節,在-5和256
之間有一個小的int緩存, 用于int
s ;每個值都是唯一的(在實踐中并不總是正確的,但大多數時候它是正確的;你不應該依賴它)。
這使得迭代對象等簡單任務的成本要低得多(因為所有值都可以從緩存中提?。?,并為常用的小值節省一些內存。雖然它不是動態大小的,所以創建兩次會得到不同的s(并不總是,但在許多情況下;在編譯期間應用了其他常量緩存操作,可以折疊在近距離內用作文本的值)。bytes
int
257
id
對于 s 不存在這樣的緩存,因為有近乎無限數量的值,并且很少有人可能會在程序的廣泛區域中看到重用。float
float
添加回答
舉報
0/150
提交
取消