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

Posted lvmenghui0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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时,并没有指向相同的浮点型对象。

 











以上是关于python中,a=10.0 b=10.0 a is b 为什么输出是false的主要内容,如果未能解决你的问题,请参考以下文章

request 10.0 模块安装

Python模块之random

Pig 10.0 - 将元组分组并在 foreach 中合并包

iOS10.0 TabBar Bug(底部同时展示原生和自定义tabBar)-b

关于ArcGIS10.0中的栅格计算中的函数

Python Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)