什么是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)存地址。
語法
id 語法:
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. python利用os模塊編寫文件復(fù)制功能——copy()函數(shù)用法2. php測(cè)試程序運(yùn)行速度和頁面執(zhí)行速度的代碼3. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究4. 三個(gè)不常見的 HTML5 實(shí)用新特性簡介5. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁6. ajax請(qǐng)求添加自定義header參數(shù)代碼7. Python使用jupyter notebook查看ipynb文件過程解析8. 解決Python 進(jìn)程池Pool中一些坑9. 解決python腳本中error: unrecognized arguments: True錯(cuò)誤10. IntelliJ IDEA創(chuàng)建普通的Java 項(xiàng)目及創(chuàng)建 Java 文件并運(yùn)行的教程
