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访问纯真IP数据库的代码
May 19 Python
python写的一个文本编辑器
Jan 23 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
python 矩阵增加一行或一列的实例
Apr 04 Python
详解Python中的正则表达式
Jul 08 Python
Python3模拟登录操作实例分析
Mar 12 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
python从Oracle读取数据生成图表
Oct 14 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 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 时间日期操作实战
2011/08/26 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
EXT中xtype的含义分析
2010/01/07 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
自荐信的五个重要部分
2013/10/29 职场文书
应届毕业生自我鉴定范文
2013/12/27 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
小班幼儿评语大全
2014/04/30 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
学习党章心得体会2016
2016/01/15 职场文书
浅谈node.js中间件有哪些类型
2021/04/29 Javascript
详解Redis复制原理
2021/06/04 Redis