Python中的id()函数指的什么
Python官方文档给出的解释是
id(object)
Returnthe“identity”ofanobject.Thisisaninteger(orlonginteger)whichisguaranteedtobeuniqueandconstantforthisobjectduringitslifetime.Twoobjectswithnon-overlappinglifetimesmayhavethesameid()value.
CPythonimplementationdetail:Thisistheaddressoftheobjectinmemory.
由此可以看出:
1、id(object)返回的是对象的“身份证号”,唯一且不变,但在不重合的生命周期里,可能会出现相同的id值。此处所说的对象应该特指复合类型的对象(如类、list等),对于字符串、整数等类型,变量的id是随值的改变而改变的。
2、一个对象的id值在CPython解释器里就代表它在内存中的地址。(CPython解释器:http://zh.wikipedia.org/wiki/CPython)
classObj(): def__init__(self,arg): self.x=arg if__name__=='__main__': obj=Obj(1) printid(obj)#32754432 obj.x=2 printid(obj)#32754432 s="abc" printid(s)#140190448953184 s="bcd" printid(s)#32809848 x=1 printid(x)#15760488 x=2 printid(x)#15760464
令外,用is判断两个对象是否相等时,依据就是这个id值
classObj(): def__init__(self,arg): self.x=arg def__eq__(self,other): returnself.x==other.x if__name__=='__main__': obj1=Obj(1) obj2=Obj(1) printobj1isobj2#False printobj1==obj2#True lst1=[1] lst2=[1] printlst1islst2#False printlst1==lst2#True s1='abc' s2='abc' prints1iss2#True prints1==s2#True a=2 b=1+1 printaisb#True a=19998989890 b=19998989889+1 printaisb#False
is与==的区别就是,is是内存中的比较,而==是值的比较
总结
以上所述是小编给大家介绍Python中的id函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!