This article describes what the ID () function in Python refers to, has a certain reference value, now share to everyone, the need for friends can refer to
The ID () function is used to get the memory address of the object. Many friends don't know what the ID function is in python. The next small series to share this article to help you learn
The explanation given in the official Python document is
ID (object)
Return the "Identity" of an object. The is a integer (or long Integer) which is guaranteed to being unique and constant for the this object during its lifetime. The same ID () value is objects with non-overlapping lifetimes.
CPython implementation Detail:this is the address of the object in memory.
From this we can see:
1. ID (object) returns the "Social Security Number" of the object, which is unique and unchanging, but the same ID value may occur during a non-coincident life cycle. The object mentioned here should refer specifically to objects of compound types (such as classes, lists, etc.), and for strings, integers, and so on, the ID of the variable changes with the value.
2. The ID value of an object represents its address in memory in the CPython interpreter. (CPython interpreter: 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
To determine if two objects are equal, it is the ID value
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 ' C34/>print S1 is s2 #True print S1 = = S2 #True a=2 b=1+1 print A is b #True a = 1 9998989890 b = 19998989889 +1 print A is B #False
The difference between IS and = = is that it is an in-memory comparison, and = = is a comparison of values