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

>>>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时,并没有指向相同的浮点型对象。

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