什么是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 相关文章推荐
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
May 06 Python
Django中模版的子目录与include标签的使用方法
Jul 16 Python
Python中的super()方法使用简介
Aug 14 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
python标记语句块使用方法总结
Aug 05 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
python中常见错误及解决方法
Jun 21 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
Spy++的使用方法及下载教程
Jan 29 Python
Python中的pprint模块
Nov 27 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循环输出数据库内容的代码
2008/05/24 PHP
php牛逼的面试题分享
2013/01/18 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
python字符串的方法与操作大全
2018/01/30 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
人事部专员岗位职责
2014/03/04 职场文书
宣传保护环境的公益广告词
2014/03/13 职场文书
公司联欢会主持词
2015/07/04 职场文书
经典祝酒词大全
2015/08/12 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python