1.函数名及其来源
id() 函数命名来源于英文单词identification缩写(编号,身份标识)。 用于显示对象的内存地址。
id 函数的例子:
>>>x = 1
>>>id(x)
1799777296 # 这里每个新对象id()获取的值会不一样,同一个对象则是不变的,重新赋值后变量发生改变,id也变
这里要补充另一个相关知识。 我们在python中使用的对象,变量,在没有写入文件时,都是存储于计算机的内存空间中,每个对象都会被分配一个内存地址(可理解为门牌号) id()函数常常用于判断对象是否变化了
2.函数定义源码及其用法拆解
id([object])
- object -- 对象。
>>> a=2.0
>>> b=2.0
>>> id(a)
524440880
>>> id(b)
524440904
>>> a=2
>>> b=2
>>> id(a)
524425104
>>> id(b)
524425104
看上面例子可能奇怪,怎么有的id一样,有的id不一样呢。 但是为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象(明确范围:[-5, 256]) 这些小整数被定义在了这个对象,python采取重用对象内存的办法,如指向a=2,b=2时,由于2作为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象。当数值较大时,id就不一样了。
>>> a=5555
>>> b=5555
>>> a is b
False
>>> id(a)
12464372
>>> id(b)
12464396
用is判断两个对象是否相等时,依据就是这个id值 所以看下面的例子:
>>>a=2
>>>b=2
>>>a is b
True
>>>a=555
>>>b=555
>>>a is b
False
就不难理解了。
那如果不是比较id,而是数值比较,我们用==比较
>>>a=2
>>>b=2
>>>a == b
True
>>>a=555
>>>b=555
>>>a == b
True
3.版本差异
无版本差异
4.学习建议
id()函数是理解对象内存分配机制非常重要的辅助函数,常用判断中is和==的重要区别就源于此。
对基础运行环境有疑问的,推荐参考:python函数深入浅出 0.基础篇