关于python里id函数的简介
小编给大家分享一下关于python里id函数的简介,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
python官方给出的id解释为
id(object)Returnthe“identity”ofanobject.Thisisaninteger(orlonginteger)whichisguaranteedtobeuniqueandconstantforthisobjectduringitslifetime.Twoobjectswithnon-overlappinglifetimesmayhavethesame?id()?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=argif__name__=='__main__':obj=Obj(1)printid(obj)#32754432obj.x=2printid(obj)#32754432s="abc"printid(s)#140190448953184s="bcd"printid(s)#32809848x=1printid(x)#15760488x=2printid(x)
令外,用is判断两个对象是否相等时,依据就是这个id值
classObj():def__init__(self,arg):self.x=argdef__eq__(self,other):returnself.x==other.xif__name__=='__main__':obj1=Obj(1)obj2=Obj(1)printobj1isobj2#Falseprintobj1==obj2#Truelst1=[1]lst2=[1]printlst1islst2#Falseprintlst1==lst2#Trues1='abc's2='abc'prints1iss2#Trueprints1==s2#Truea=2b=1+1printaisb#Truea=19998989890b=19998989889+1printaisb#False
is与==的区别就是,is是内存中的比较,而==是值的比较。
看完了这篇文章,相信你对关于python里id函数的简介有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。