python的id()函數(shù)解密過程
更新時間:2012年12月25日 10:33:22 作者:
id()函數(shù)在使用過程中很頻繁,為此本人對此函數(shù)深入研究下,曬出代碼和大家分享下,希望對你們有所幫助
>>> a = 2.5
>>> b = 2.5
>>> c = b
>>> a is c
False
>>> a = 2
>>> b = 2
>>> c = b
>>> a is c
True
今天在使用is函數(shù)的時候去打印a,b分別被賦值為2.5 和2的情況,發(fā)現(xiàn):
>>> a = 2
>>> b = 2
>>> id(a)
21132060
>>> id(b)
21132060
>>> a = 2.5
>>> b = 2.5
>>> id(a)
19622112
>>> id(b)
29321464
當(dāng)a,b為2的時候id相同,而為2.5的時候不同,這種情況在string字符串的時候也會出現(xiàn),即當(dāng)很短的a,b賦值很短的字符串的時候,它們的id值相同,而很長的則不會;
之后,可以得到一個簡單的結(jié)論就是:解釋器在對值很小的int和很短的字符串的時候做了一點小優(yōu)化,只分配了一個對象,讓它們id一樣了。
>>> b = 2.5
>>> c = b
>>> a is c
False
>>> a = 2
>>> b = 2
>>> c = b
>>> a is c
True
今天在使用is函數(shù)的時候去打印a,b分別被賦值為2.5 和2的情況,發(fā)現(xiàn):
>>> a = 2
>>> b = 2
>>> id(a)
21132060
>>> id(b)
21132060
>>> a = 2.5
>>> b = 2.5
>>> id(a)
19622112
>>> id(b)
29321464
當(dāng)a,b為2的時候id相同,而為2.5的時候不同,這種情況在string字符串的時候也會出現(xiàn),即當(dāng)很短的a,b賦值很短的字符串的時候,它們的id值相同,而很長的則不會;
之后,可以得到一個簡單的結(jié)論就是:解釋器在對值很小的int和很短的字符串的時候做了一點小優(yōu)化,只分配了一個對象,讓它們id一樣了。
相關(guān)文章
pytorch中tensorboard安裝及安裝過程中出現(xiàn)的常見錯誤問題
這篇文章主要介紹了pytorch中tensorboard安裝及安裝過程中出現(xiàn)的常見錯誤問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
python和pygame實現(xiàn)簡單俄羅斯方塊游戲
這篇文章主要為大家詳細介紹了python和pygame實現(xiàn)簡單俄羅斯方塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
python中利用隊列asyncio.Queue進行通訊詳解
asyncio是Python 3.4版本引入的標準庫,直接內(nèi)置了對異步IO的支持。 下面這篇文章主要給大家介紹了關(guān)于python中利用隊列asyncio.Queue進行通訊的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。2017-09-09
Python使用textract實現(xiàn)從各種文件中提取文本信息
textract是一個強大的Python庫,可以用于從各種文件格式中提取文本,本文將介紹textract的使用場景,以及一些常用的Python代碼案例,希望對大家有所幫助2024-01-01
python神經(jīng)網(wǎng)絡(luò)使用tensorflow實現(xiàn)自編碼Autoencoder
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)使用tensorflow實現(xiàn)自編碼Autoencoder,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05

