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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
Python中无限元素列表的实现方法
Aug 18 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
Python从文件中读取数据的方法讲解
Feb 14 Python
用scikit-learn和pandas学习线性回归的方法
Jun 21 Python
Django结合ajax进行页面实时更新的例子
Aug 12 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 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
神族 PROTOSS 概述
2020/03/14 星际争霸
PHP XML备份Mysql数据库
2009/05/27 PHP
PHP 基本语法格式
2009/12/15 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
js函数般调用正则
2008/04/08 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
Python解析json文件相关知识学习
2016/03/01 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
儿媳婚宴答谢词
2014/01/14 职场文书
教师简历自我评价
2014/02/03 职场文书
母婴店促销方案
2014/03/05 职场文书
幼儿教师培训感言
2014/03/08 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书