Python中的id()函数指的什么

Python官方文档给出的解释是

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)   #15760464 

令外,用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函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 深入理解python中函数传递参数是值传递还是引用传递

    目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用"的方式.实际上,这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典 或者列表)的引用,就能修改对象的原始值--相当于通过"传引用"来传递对象.如果函数收到的是一个不可变对象(比如数字.字符或者元组)的引用,就不能 直接修改原始对象--相当于通过"传值"来传递对象. 你可以在很多讨论该问题

  • Python编程之Re模块下的函数介绍

    re模块下的函数 compile(pattern):创建模式对象 import re pat=re.compile('A') m=pat.search('CBA') #等价于 re.search('A','CBA') print m <_sre.SRE_Match object at 0x9d690c8> #匹配到了,返回MatchObject(True) m=pat.search('CBD') print m None #没有匹配到,返回None(False) search(pattern,

  • python中map()函数的使用方法示例

    前言 在python里有一个函数map(),它有点高大上的感觉.本文将详细给大家介绍python中map()函数使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 或许你已经看过GOOGLE最挣钱的论文: "MapReduce: Simplified Data Processing on Large Clusters" Google的那篇MapReduce论文里说:Our abstraction is inspired by the map and redu

  • 简单了解Python中的几种函数

    几个特殊的函数(待补充) python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda >>> g = lambda x,y:x+y #x+y,并返回结果 >>> g(3,4) 7 >>> (lambda x:x**2)(4) #返回4的平方 16 lambda函数的使用方法: 在lambda后面直接跟变量 变量后面是冒号 冒号后面是表达式,表达式计算

  • python 中的int()函数怎么用

    int(x, [base]) 功能: 函数的作用是将一个数字或base类型的字符串转换成整数. 函数原型: int(x=0) int(x, base=10),base缺省值为10,也就是说不指定base的值时,函数将x按十进制处理. 适用Python版本: Python2.x Python3.x 注意: 1. x 可以是数字或字符串,但是base被赋值后 x 只能是字符串 2. x 作为字符串时必须是 base 类型,也就是说 x 变成数字时必须能用 base 进制表示 Python英文文档解释

  • Python内建函数之raw_input()与input()代码解析

    这两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互.但他们的功能不尽相同.举两个小例子. >>> raw_input_A = raw_input("raw_input: ") raw_input: abc >>> input_A = input("Input: ") Input: abc Traceback(most recent call last): File "<pyshell#1>

  • python numpy函数中的linspace创建等差数列详解

    前言 本文主要给大家介绍的是关于linspace创建等差数列的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. numpy.linspace 是用于创建一个由等差数列构成的一维数组.它最长用的有三个参数,当然不止三个. 第一个例子,用到三个参数,第一个参数表示起始点.第二个参数表示终止点,第三个参数表示数列的个数. import numpy as np print(np.linspace(1,10,10,endpoint=False)) 创建一个元素全部为1的等差数列,

  • Python中的id()函数指的什么

    Python官方文档给出的解释是 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

  • 对python中数据集划分函数StratifiedShuffleSplit的使用详解

    文章开始先讲下交叉验证,这个概念同样适用于这个划分函数 1.交叉验证(Cross-validation) 交叉验证是指在给定的建模样本中,拿出其中的大部分样本进行模型训练,生成模型,留小部分样本用刚建立的模型进行预测,并求这小部分样本的预测误差,记录它们的平方加和.这个过程一直进行,直到所有的样本都被预测了一次而且仅被预测一次,比较每组的预测误差,选取误差最小的那一组作为训练模型. 下图所示 2.StratifiedShuffleSplit函数的使用 官方文档 用法: from sklearn.

  • python中的split()函数和os.path.split()函数使用详解

    Python中有split()和os.path.split()两个函数: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表. os.path.split():将文件名和路径分割开. 1.split()函数 语法:str.split(str=" ",num=string.count(str))[n] 参数说明: str: 表示为分隔符,默认为空格,但是不能为空串.若字符串中没有分隔符,则把整个字符串作为列表的一个元素. num:表示分割次数.如果存在参

  • python中的 sorted()函数和sort()方法

    目录 1.sort() 2.sorted() 3.sorted()操作列表 4.sorted()排序字典 ①参数key:使用lambda定义 ②参数key:使用itemgetter直接生成 1.sort() 首先看sort()方法,sort方法只能对列表进行操作,而sorted可用于所有的可迭代对象. a = [1, 5, 3, 4, 2] a.sort() print(a) 调用sort()方法后,原列表被改变. 2.sorted() 再看sorted()函数, sorted(iterable

  • python中的 sorted()函数和sort()方法区别

    目录 1.sort() 2.sorted() 3.sorted()操作列表 4.sorted()排序字典 ①参数key:使用lambda定义 ②参数key:使用itemgetter直接生成 1.sort() 首先看sort()方法,sort方法只能对列表进行操作,而sorted可用于所有的可迭代对象. a = [1, 5, 3, 4, 2] a.sort() print(a) 调用sort()方法后,原列表被改变. 2.sorted() 再看sorted()函数, sorted(iterable

  • 浅谈python中的getattr函数 hasattr函数

    hasattr(object, name) 作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的). 示例: >>> hasattr(list, 'append') True >>> hasattr(list, 'add') False getattr(object,name,default): 作用:返回object的名称为name的属性的属性值,如果属性name存在,则直接返回其

  • python中去空格函数的用法

    本文简单介绍了Python中去空格函数的用法,这是一个很实用的函数,希望对大家的Python程序设计有所帮助.具体分析如下: 在Python中字符串处理函数里有三个去空格的函数: strip 同时去掉左右两边的空格 lstrip 去掉左边的空格 rstrip 去掉右边的空格 具体示例如下: >>>a=" gho stwwl " >>>a.lstrip() 'gho stwwl ' >>>a.rstrip() ' gho stwwl'

  • 详解Python中的分组函数groupby和itertools)

    具体代码如下所示: from operator import itemgetter #itemgetter用来去dict中的key,省去了使用lambda函数 from itertools import groupby #itertool还包含有其他很多函数,比如将多个list联合起来.. d1={'name':'zhangsan','age':20,'country':'China'} d2={'name':'wangwu','age':19,'country':'USA'} d3={'nam

  • 对python中矩阵相加函数sum()的使用详解

    假如矩阵A是n*n的矩阵 A.sum()是计算矩阵A的每一个元素之和. A.sum(axis=0)是计算矩阵每一列元素相加之和. A.Sum(axis=1)是计算矩阵的每一行元素相加之和. 以上这篇对python中矩阵相加函数sum()的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

随机推荐