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

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