什么是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 相关文章推荐
Django学习笔记之Class-Based-View
Feb 15 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
python验证码识别的示例代码
Sep 21 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
Python的Tqdm模块实现进度条配置
Feb 24 Python
python re模块和正则表达式
Mar 24 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
Python OpenCV 图像平移的实现示例
Jun 04 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 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采集腾讯微博的实现代码
2012/01/19 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
JS hashMap实例详解
2016/05/26 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
Python科学画图代码分享
2017/11/29 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
python 元组和列表的区别
2020/12/30 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
写给女生的道歉信
2014/01/08 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
紧急通知
2015/04/17 职场文书
英语读书笔记
2015/07/02 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
导游词之江南周庄
2019/12/06 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python