什么是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. 完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問題2. JAMon(Java Application Monitor)備忘記3. 利用CSS制作3D動(dòng)畫4. Java GZip 基于內(nèi)存實(shí)現(xiàn)壓縮和解壓的方法5. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))6. idea配置jdk的操作方法7. SpringBoot+TestNG單元測(cè)試的實(shí)現(xiàn)8. Springboot 全局日期格式化處理的實(shí)現(xiàn)9. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼10. idea打開多個(gè)窗口的操作方法
