1. 程式人生 > 程式設計 >什麼是python的id函式

什麼是python的id函式

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)返回的是物件的“身份證號”,唯一且不變,但在不重合的生命週期裡,可能會出現相同的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)

令外,用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 id() 函式

描述

id() 函式返回物件的唯一識別符號,識別符號是一個整數。

CPython 中 id() 函式用於獲取物件的記憶體地址。

語法

id 語法:

id([object])

引數說明:

object -- 物件。

返回值

返回物件的記憶體地址。

例項

以下例項展示了 id 的使用方法:

>>>a = 'runoob'
>>> id(a)
4531887632
>>> b = 1
>>> id(b)
140588731085608

到此這篇關於什麼是python的id函式的文章就介紹到這了,更多相關python裡id函式是什麼內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!