Python中的id()函數指的什麼

不言
發布: 2023-03-24 06:56:02
原創
6056 人瀏覽過

這篇文章介紹的內容是關於Python中的id()函數指的什麼,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

id() 函數用於取得物件的記憶體位址。很多朋友不清楚python中的id函數到底是什麼?接下來小編跟大家分享本文幫助大家學習

Python官方文件給的解釋是

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-overlappping lifetimes may have the same id#) value. This is the address of the object in memory.

由此可以看出:

1、id(object)回傳的是物件的「身分證號」 ,唯一且不變,但在不重合的生命週期裡,可能會出現相同的id值。此處所說的物件應該特別指複合類型的物件(如類別、list等),對於字串、整數等類型,變數的id是隨值的改變而改變的。

2、一個物件的id值在CPython解釋器裡就代表它在記憶體中的位址。 (CPython解釋者:http://zh.wikipedia.org/wiki/CPython)


#

class Obj(): 
 def __init__(self,arg): 
  self.x=arg 
if __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)   #15760464
登入後複製


命令外,用is判斷兩個物件是否相等時,依據就是這個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與==的差別就是,is是記憶體中的比較,而==是值的比較

相關推薦:

Python放射的程式碼實作

以上是Python中的id()函數指的什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!