python的id()函數(shù)解密過程
更新時(shí)間:2012年12月25日 10:33:22 作者:
id()函數(shù)在使用過程中很頻繁,為此本人對(duì)此函數(shù)深入研究下,曬出代碼和大家分享下,希望對(duì)你們有所幫助
>>> a = 2.5
>>> b = 2.5
>>> c = b
>>> a is c
False
>>> a = 2
>>> b = 2
>>> c = b
>>> a is c
True
今天在使用is函數(shù)的時(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的時(shí)候id相同,而為2.5的時(shí)候不同,這種情況在string字符串的時(shí)候也會(huì)出現(xiàn),即當(dāng)很短的a,b賦值很短的字符串的時(shí)候,它們的id值相同,而很長(zhǎng)的則不會(huì);
之后,可以得到一個(gè)簡(jiǎn)單的結(jié)論就是:解釋器在對(duì)值很小的int和很短的字符串的時(shí)候做了一點(diǎn)小優(yōu)化,只分配了一個(gè)對(duì)象,讓它們id一樣了。
>>> b = 2.5
>>> c = b
>>> a is c
False
>>> a = 2
>>> b = 2
>>> c = b
>>> a is c
True
今天在使用is函數(shù)的時(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的時(shí)候id相同,而為2.5的時(shí)候不同,這種情況在string字符串的時(shí)候也會(huì)出現(xiàn),即當(dāng)很短的a,b賦值很短的字符串的時(shí)候,它們的id值相同,而很長(zhǎng)的則不會(huì);
之后,可以得到一個(gè)簡(jiǎn)單的結(jié)論就是:解釋器在對(duì)值很小的int和很短的字符串的時(shí)候做了一點(diǎn)小優(yōu)化,只分配了一個(gè)對(duì)象,讓它們id一樣了。
相關(guān)文章
利用PyQt5模擬實(shí)現(xiàn)網(wǎng)頁(yè)鼠標(biāo)移動(dòng)特效
不知道大家有沒有發(fā)現(xiàn),博客園有些博客左側(cè)會(huì)有鼠標(biāo)移動(dòng)特效。通過移動(dòng)鼠標(biāo),會(huì)形成類似蜘蛛網(wǎng)的特效,本文將用PyQt5實(shí)現(xiàn)這一特效,需要的可以參考一下2022-03-03Python開發(fā)必知必會(huì)標(biāo)識(shí)符UUID全面使用指南
在Python編程中,UUID(通用唯一標(biāo)識(shí)符)是一個(gè)非常有用的工具,用于生成唯一的標(biāo)識(shí)符,本文將深入探討Python中UUID的用法、不同版本的UUID、以及如何在實(shí)際應(yīng)用中充分利用UUID的優(yōu)勢(shì)2023-12-12python實(shí)現(xiàn)修改xml文件內(nèi)容
這篇文章主要介紹了python實(shí)現(xiàn)修改xml文件內(nèi)容,XML 指可擴(kuò)展標(biāo)記語(yǔ)言,是一種標(biāo)記語(yǔ)言,是從標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(SGML)中簡(jiǎn)化修改出來的2022-07-07Pygame游戲開發(fā)之太空射擊實(shí)戰(zhàn)添加圖形篇
相信大多數(shù)8090后都玩過太空射擊游戲,在過去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來自己動(dòng)手實(shí)現(xiàn)它,在編寫學(xué)習(xí)中回顧過往展望未來,在本課中,我們將討論如何在游戲中使用預(yù)先繪制的圖形2022-08-08Python實(shí)現(xiàn)的井字棋(Tic Tac Toe)游戲示例
這篇文章主要介紹了Python實(shí)現(xiàn)的井字棋(Tic Tac Toe)游戲,結(jié)合實(shí)例形式分析了井字棋的原理及Python相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01Django接受前端數(shù)據(jù)的幾種方法總結(jié)
下面小編就為大家?guī)硪黄狣jango接受前端數(shù)據(jù)的幾種方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11關(guān)于python selenium 運(yùn)行時(shí)彈出窗口問題
最近在做一個(gè)網(wǎng)頁(yè)代填項(xiàng)目,用到了python的selenium知識(shí),經(jīng)過了各種嘗試與搜索最后終算是較完美的解決了,下面小編給大家?guī)砹藀ython selenium 運(yùn)行時(shí)彈出窗口問題,感興趣的朋友一起看看吧2021-11-11