python id函数的输出值问题

>>>a=2.0>>>b=2.0>>>id(a)524440880>>>id(b)524440904>>>a=2>>>b=2>>>id(a)524425104>>>id(... >>> a=2.0
>>> b=2.0
>>> id(a)
524440880
>>> id(b)
524440904
>>> a=2
>>> b=2
>>> id(a)
524425104
>>> id(b)
524425104

为什么上面输出的值有些一样,有些不一样呢,求大神详细解释下。
展开
 我来答
起事李0p
推荐于2016-03-10 · TA获得超过117个赞
知道答主
回答量:31
采纳率:0%
帮助的人:27.3万
展开全部
id方法的返回值就是对象的内存地址。

python中会为每个出现的对象分配内存,哪怕他们的值完全相等(注意是相等不是相同)。如执行a=2.0,b=2.0这两个语句时会先后为2.0这个Float类型对象分配内存,然后将a与b分别指向这两个对象。所以a与b指向的不是同一对象:
>>> a=2.0
>>> b=2.0
>>> a is b
False
>>> a==b
True
但是为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,python采取重用对象内存的办法,如指向a=2,b=2时,由于2作为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象:
>>> a=2
>>> b=2
>>> a is b
True
如果赋值的不是2而是大的数值,情况就跟前面的一样了:

>>> a=5555
>>> b=5555
>>> a is b
False
>>> id(a)
12464372
>>> id(b)
12464396
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式