什么是python的id函数


Posted in Python onJune 11, 2020

python官方给出的id解释为

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)

令外,用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() 函数

描述

id() 函数返回对象的唯一标识符,标识符是一个整数。

CPython 中 id() 函数用于获取对象的内存地址。

语法

id 语法:

id([object])

参数说明:

object -- 对象。

返回值

返回对象的内存地址。

实例

以下实例展示了 id 的使用方法:

>>>a = 'runoob'
>>> id(a)
4531887632
>>> b = 1
>>> id(b)
140588731085608

到此这篇关于什么是python的id函数的文章就介绍到这了,更多相关python里id函数是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python获得linux下所有挂载点(mount points)的方法
Apr 29 Python
python如何通过protobuf实现rpc
Mar 06 Python
python中requests库session对象的妙用详解
Oct 30 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 Python
Python subprocess模块详细解读
Jan 29 Python
详解python中的装饰器
Jul 10 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
Aug 23 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
python 插入日期数据到Oracle实例
Mar 02 Python
python3爬虫中引用Queue的实例讲解
Nov 24 Python
python 检测nginx服务邮件报警的脚本
Dec 31 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 #Python
Pycharm中配置远程Docker运行环境的教程图解
Jun 11 #Python
Keras 快速解决OOM超内存的问题
Jun 11 #Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 #Python
使用keras实现孪生网络中的权值共享教程
Jun 11 #Python
查看keras各种网络结构各层的名字方式
Jun 11 #Python
python datetime时间格式的相互转换问题
Jun 11 #Python
You might like
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
队列在编程中的实际应用(php)
2010/09/04 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
php表单敏感字符过滤类
2014/12/08 PHP
php遍历目录方法小结
2015/03/10 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
python中OrderedDict的使用方法详解
2017/05/05 Python
python安装Scrapy图文教程
2017/08/14 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
Python对象转换为json的方法步骤
2019/04/25 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
Python datetime模块的使用示例
2021/02/02 Python
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
PHP面试题及答案二
2015/05/23 面试题
函授本科自我鉴定
2014/02/04 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang