什么是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转换摩斯密码示例
Feb 16 Python
python多线程操作实例
Nov 21 Python
python获取一组汉字拼音首字母的方法
Jul 01 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
Python+AutoIt实现界面工具开发过程详解
Aug 07 Python
python读取ini配置的类封装代码实例
Jan 08 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 Python
Python图像读写方法对比
Nov 16 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 Python
如何利用python创作字符画
Jun 25 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实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
php函数连续调用实例分析
2015/07/30 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
简单的php购物车代码
2020/06/05 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
2010/11/16 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
python实现可变变量名方法详解
2019/07/01 Python
台湾森森购物网:U-mall
2017/10/16 全球购物
EJB的几种类型
2012/08/15 面试题
教师绩效工资方案
2014/02/01 职场文书
公司端午节活动方案
2014/02/04 职场文书
入党积极分子评语
2014/05/04 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
收入证明范本
2015/06/12 职场文书
社区服务理念口号
2015/12/25 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
MySQL多表查询机制
2022/03/17 MySQL