什么是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 list转dict示例分享
Jan 28 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
python登录豆瓣并发帖的方法
Jul 08 Python
Python中struct模块对字节流/二进制流的操作教程
Jan 21 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
Python itertools.product方法代码实例
Mar 27 Python
Python如何实现远程方法调用
Aug 07 Python
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 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 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
JS常见问题整理(持续更新)
2013/08/06 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
js获取url传值的方法
2015/12/18 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
举例讲解Python中的算数运算符的用法
2015/05/13 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
个人投资计划书
2014/05/01 职场文书
志愿者事迹材料
2014/12/26 职场文书
公司奖励通知
2015/04/21 职场文书
教师节校长致辞
2015/07/31 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python