什么是python的id函數(shù)
python官方給出的id解釋為
id(object)Return the “identity” of an object. This is an integer (or long integer) which is guaranteed to be unique and constant for this object during its lifetime. Two objects with non-overlapping lifetimes may have the same?id()?value.CPython implementation detail:?This is the address of the object in memory.
由此可以看出:
1、id(object)返回的是對(duì)象的“身份證號(hào)”,唯一且不變,但在不重合的生命周期里,可能會(huì)出現(xiàn)相同的id值。此處所說的對(duì)象應(yīng)該特指復(fù)合類型的對(duì)象(如類、list等),對(duì)于字符串、整數(shù)等類型,變量的id是隨值的改變而改變的。
2、一個(gè)對(duì)象的id值在CPython解釋器里就代表它在內(nèi)存中的地址。(CPython解釋器:http://zh.wikipedia.org/wiki/CPython)
class Obj(): def __init__(self,arg): self.x=argif __name__ == ’__main__’: obj=Obj(1) print id(obj) #32754432 obj.x=2 print id(obj) #32754432 s='abc' print id(s) #140190448953184 s='bcd' print id(s) #32809848 x=1 print id(x) #15760488 x=2 print id(x)
令外,用is判斷兩個(gè)對(duì)象是否相等時(shí),依據(jù)就是這個(gè)id值
class Obj(): def __init__(self,arg): self.x=arg def __eq__(self,other): return self.x==other.x if __name__ == ’__main__’: obj1=Obj(1) obj2=Obj(1) print obj1 is obj2 #False print obj1 == obj2 #True lst1=[1] lst2=[1] print lst1 is lst2 #False print lst1 == lst2 #True s1=’abc’ s2=’abc’ print s1 is s2 #True print s1 == s2 #True a=2 b=1+1 print a is b #True a = 19998989890 b = 19998989889 +1 print a is b #False
is與==的區(qū)別就是,is是內(nèi)存中的比較,而==是值的比較。
知識(shí)點(diǎn)擴(kuò)展:
Python id() 函數(shù)
描述
id() 函數(shù)返回對(duì)象的唯一標(biāo)識(shí)符,標(biāo)識(shí)符是一個(gè)整數(shù)。
CPython 中 id() 函數(shù)用于獲取對(duì)象的內(nèi)存地址。
語(yǔ)法
id 語(yǔ)法:
id([object])
參數(shù)說明:
object -- 對(duì)象。
返回值
返回對(duì)象的內(nèi)存地址。
實(shí)例
以下實(shí)例展示了 id 的使用方法:
>>>a = ’runoob’>>> id(a)4531887632>>> b = 1>>> id(b)140588731085608
到此這篇關(guān)于什么是python的id函數(shù)的文章就介紹到這了,更多相關(guān)python里id函數(shù)是什么內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. HTML5 Canvas繪制圖形從入門到精通2. HTTP協(xié)議常用的請(qǐng)求頭和響應(yīng)頭響應(yīng)詳解說明(學(xué)習(xí))3. 不要在HTML中濫用div4. XML入門的常見問題(三)5. HTML DOM setInterval和clearInterval方法案例詳解6. HTML5實(shí)戰(zhàn)與剖析之觸摸事件(touchstart、touchmove和touchend)7. CSS清除浮動(dòng)方法匯總8. 本站用的rss輸出9. Vue如何使用ElementUI對(duì)表單元素進(jìn)行自定義校驗(yàn)及踩坑10. XML在語(yǔ)音合成中的應(yīng)用
