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 相关文章推荐
Python实现抓取城市的PM2.5浓度和排名
Mar 19 Python
Python自动扫雷实现方法
Jul 25 Python
python多线程socket编程之多客户端接入
Sep 12 Python
基于python的字节编译详解
Sep 20 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
通过Python 接口使用OpenCV的方法
Apr 02 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
Python类继承和多态原理解析
Feb 05 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
简单了解python关键字global nonlocal区别
Sep 21 Python
python编程的核心知识点总结
Feb 08 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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 魔术方法使用说明
2009/10/20 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
PHP文件与目录操作示例
2016/12/24 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python调用新浪微博API项目实践
2014/07/28 Python
python获取android设备的GPS信息脚本分享
2015/03/06 Python
python实现web方式logview的方法
2015/08/10 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
python logging设置level失败的解决方法
2020/02/19 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
文员自我评价怎么写
2013/09/19 职场文书
机电专业大学生求职信
2013/10/04 职场文书
教师岗位职责
2013/11/17 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
班组长竞聘书
2014/03/31 职场文书
医院义诊活动总结
2014/07/04 职场文书
好的促销活动方案
2014/08/21 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
少年犯观后感
2015/06/11 职场文书
生日宴会祝酒词
2015/08/10 职场文书
新学期主题班会
2015/08/17 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis