Python中的id()函数指的什么


Posted in Python onOctober 17, 2017

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-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)   #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中的id函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
自己编程中遇到的Python错误和解决方法汇总整理
Jun 03 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
django使用LDAP验证的方法示例
Dec 10 Python
Python集中化管理平台Ansible介绍与YAML简介
Jun 12 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
python return逻辑判断表达式实现解析
Dec 02 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
Python3通过chmod修改目录或文件权限的方法示例
Jun 08 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
Nov 13 Python
python字典进行运算原理及实例分享
Aug 02 Python
Python中int()函数的用法浅析
Oct 17 #Python
一文总结学习Python的14张思维导图
Oct 17 #Python
python 中的int()函数怎么用
Oct 17 #Python
python遍历序列enumerate函数浅析
Oct 17 #Python
浅谈python中的正则表达式(re模块)
Oct 17 #Python
深入理解Django的自定义过滤器
Oct 17 #Python
Python引用类型和值类型的区别与使用解析
Oct 17 #Python
You might like
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
投票管理程序
2006/10/09 PHP
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
PHP如何将XML转成数组
2016/04/04 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
php 多个变量指向同一个引用($b = &$a)用法分析
2019/11/13 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
jQuery列表检索功能实现代码
2017/07/17 jQuery
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
python使用turtle库绘制树
2018/06/25 Python
Python线程同步的实现代码
2018/10/03 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
8和9的加减法教学反思
2014/05/01 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
结婚幸福感言
2015/08/01 职场文书