首页 > 解决方案 > is operator python 的奇怪行为

问题描述

如果我执行以下操作

x = 0
y = 0
print(x is y)

我明白了True

以下代码

x = 0
y = 0.0
print(x is y)

输出False这是预期的行为。

x = 0.0
y = 0.0
print(x is y)

返回False。为什么会发生这种情况以及如何解决它?

我的用例是我需要将 0 和 0.0 与 python 中的其他值区分开来,例如 False、"" 等,这将在 ax==0 比较中返回 True

编辑:

评论中的链接问题没有回答我的问题。我需要知道如何解决这个问题。

标签: python-3.x

解决方案


在这种情况下,您可以先检查type,然后再检查值。

像这样的东西:

>>> a = 0
>>> b = 0
>>> c = 0.0
>>> d = 0.0
>>> type(a) is type(b) and a == b
True
>>> type(a) is type(c) and a == c
False
>>> type(c) is type(d) and c == d
True
>>>

推荐阅读