什么是python的id函数

 更新时间:2020年06月11日 10:41:29   作者:silencement  
在本篇文章里小编给大家分享了关于python里id函数的基础知识点,需要的朋友们可以一起学习下。

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函数是什么内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pytorch mask_select 函数的用法详解

    Pytorch mask_select 函数的用法详解

    今天小编就为大家分享一篇Pytorch mask_select 函数的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python:type、object、class与内置类型实例

    Python:type、object、class与内置类型实例

    今天小编就为大家分享一篇Python:type、object、class与内置类型实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python判断字符串以什么结尾的实例方法

    python判断字符串以什么结尾的实例方法

    在本篇文章里小编给大家整理了关于python判断字符串以什么结尾的实例方法 ,需要的朋友们可以学习参考下。
    2020-09-09
  • Pytorch神经网络参数管理方法详细讲解

    Pytorch神经网络参数管理方法详细讲解

    这篇文章主要介绍了Pytorch神经网络参数管理方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-05-05
  • python读写csv并将csv数据写入数据库

    python读写csv并将csv数据写入数据库

    CSV,也即Comma-Separated Values,是一种用于存储表格数据的纯文本文件格式,本文主要介绍了如何使用python读写csv并将csv数据写入数据库,感兴趣的可以了解下
    2024-11-11
  • Python实用技巧之如何获取后缀名(扩展名)或文件名

    Python实用技巧之如何获取后缀名(扩展名)或文件名

    这篇文章主要介绍了在Python中获取文件名和扩展名的几种方法,包括使用os.path.basename()函数获取文件名,以及使用os.path.splitext()函数获取文件名和扩展名,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • python使用Psutil模块实现获取计算机相关信息

    python使用Psutil模块实现获取计算机相关信息

    psutil 是一个跨平台的库,用于获取进程和系统运行状态的信息,这篇文章主要为大家详细介绍了python如何调用psutil模块实现获取计算机相关信息,有需要的小伙伴可以了解下
    2023-11-11
  • 用Python实现通过哈希算法检测图片重复的教程

    用Python实现通过哈希算法检测图片重复的教程

    这篇文章主要介绍了用Python实现通过哈希算法检测图片重复的教程,这个方法被Iconfinder用作防盗版技术,需要的朋友可以参考下
    2015-04-04
  • pytest+request框架中yaml配置文件使用

    pytest+request框架中yaml配置文件使用

    pytest+request框架写接口测试自动化,使用yaml文件配置更方便管理用例中的数据,本文主要介绍了pytest+request框架中yaml配置文件使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Python二维列表的创建、转换以及访问详解

    Python二维列表的创建、转换以及访问详解

    列表中的元素还可以是另一个列表,这种列表称为多为列表,只有一层嵌套的多维列表称为二维列表,下面这篇文章主要给大家介绍了关于Python二维列表的创建、转换及访问的相关资料,需要的朋友可以参考下
    2022-04-04

最新评论