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中使用中文的方法
Feb 19 Python
python logging类库使用例子
Nov 22 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
Jan 22 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
Jun 19 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
Python logging模块写入中文出现乱码
May 21 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
python不同系统中打开方法
Jun 23 Python
Python通过字典映射函数实现switch
Nov 06 Python
解决pytorch 的state_dict()拷贝问题
Mar 03 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
Jun 09 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
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
php木马攻击防御之道
2008/03/24 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
vue3.0 上手体验
2020/09/21 Javascript
windows下安装python paramiko模块的代码
2013/02/10 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
Python上下文管理器和with块详解
2017/09/09 Python
python 重定向获取真实url的方法
2018/05/11 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
python解释器安装教程的方法步骤
2020/07/02 Python
HTML5实现签到 功能
2018/10/09 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
酒店公关部经理岗位职责
2013/11/24 职场文书
市场营销专科应届生求职信
2013/11/24 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
六查六看自查报告
2014/10/14 职场文书
加强作风建设心得体会
2014/10/22 职场文书
处罚决定书范文
2015/06/24 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
python数据处理之Pandas类型转换
2022/04/28 Python