有人可以在下面回答(输出来自IDLE或检查python shell - python 2.7)。对于1),2)和3),4)我正在做同样的操作,但得到不同的结果。
1)>>> A = 0
2)>>> a是0
真
3)>>> A = 0.0
4)>>> a是0.0
假
5)>>> 0.0是0.0
真
为什么4)是假的?
答案 0 :(得分:1)
python is
运算符用于测试两个变量是否指向同一个对象。
来自文档:
运算符是和不是对象标识的测试:当且仅当x和y是同一个对象时,x是y才为真。
例如。
a = 0.0
如果您执行b = a
,然后使用b is a
进行跟进。它将返回True。
现在,如果你执行a = 0.0
和b = 0.0
然后尝试b is a
,它将返回False,因为现在a和b是指向两个不同对象的两个变量。
答案 1 :(得分:1)
这是因为CPython
中对-5
和256
之间的任何整数的优化都会返回对已存在对象的引用,这意味着a
是对{的引用{1}},因此它们具有相同的0
。对于像id()
这样的浮点数没有这样的优化,因此在赋值时创建了一个新对象(意思是0.0
)。