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 相关文章推荐
在 Django/Flask 开发服务器上使用 HTTPS
Jul 03 Python
python中遍历文件的3个方法
Sep 02 Python
python实现矩阵乘法的方法
Jun 28 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
python 输出所有大小写字母的方法
Jan 02 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
Python递归函数特点及原理解析
Mar 04 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 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
PHP的变量类型和作用域详解
2014/03/12 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
详解Node 定时器
2018/02/26 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
python 网络编程详解及简单实例
2017/04/25 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
Python读写文件基础知识点
2019/06/10 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
班级团队活动方案
2014/08/14 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书