什么是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模拟百度登录实例详解
Jan 20 Python
Python中Scrapy爬虫图片处理详解
Nov 29 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
python三大神器之fabric使用教程
Jun 10 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
python操作excel让工作自动化
Aug 09 Python
关于Python中的向量相加和numpy中的向量相加效率对比
Aug 26 Python
使用浏览器访问python写的服务器程序
Oct 10 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
Python基于smtplib模块发送邮件代码实例
May 29 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 15 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
php discuz 主题表和回帖表的设计
2009/03/13 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
在Python中编写数据库模块的教程
2015/04/29 Python
利用python获取Ping结果示例代码
2017/07/06 Python
python读写csv文件方法详细总结
2019/07/05 Python
python框架flask表单实现详解
2019/11/04 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
企业演讲稿范文
2013/12/28 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
单位接收函范文
2015/01/30 职场文书
小学毕业感言100字
2015/07/30 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏