码迷,mamicode.com
首页 > 编程语言 > 详细

python中,a=10.0 b=10.0 a is b 为什么输出是false

时间:2018-10-27 00:01:27      阅读:440      评论:0      收藏:0      [点我收藏+]

标签:ble   赋值   命令   地址   内存地址   浮点数   等于   多个   pytho   

>>>a=10.0>>>b=10.0>>>a is bFalse为什么当a=10,b=10时,a is b输出的是True呢?

 

>>>a=10.0

>>>b=10.0
>>>a is b
False

为什么当a=10,b=10时,a is b 输出的是True呢?

 

a is b

 

比较的是变量a与变量b的内存地址是否相同,即

 

id(a)==id(b)

 

Python的内置函数id就是用来查看变量地址的

 

id(a)等于id(b)说明变量a和变量b指向的是同一个内存空间。

 

Python中整数、浮点数都是immutable,也就是创建以后不能改变内存空间的值,对变量重新赋值以后,相当于变量重新指向了另外一处内存空间。

a = 10
print id(a)
a = a + 1
print id(a) #id(a)的值会反生变化

这样,多个变量指向相同的内存空间就不会有影响,反而节省了内存的占用。

 

然而具体是否相同值的变量就占有相同内存空间,完全有Python的实现方式决定。

 

当变量a与b的值到1000时,你会发现他们的内存空间又不一样了

a = 1000
b = 1000
id(a) == id(b)
a is b

总的来说写程序是一般不用关注变量的内存空间地址,也很少使用is命令

 

python中仅缓存简单的整型,(-1,100)。这个a=10,b=10,指向相同的整型对象,但是a=10.0和b=10.0时,并没有指向相同的浮点型对象。

 

python中,a=10.0 b=10.0 a is b 为什么输出是false

标签:ble   赋值   命令   地址   内存地址   浮点数   等于   多个   pytho   

原文地址:https://www.cnblogs.com/lmh001/p/9858909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!