Если я сделаю следующее

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, "" и т. Д., Которые вернут True при сравнении x == 0.

РЕДАКТИРОВАТЬ:

Связанный вопрос в комментариях не отвечает на мой вопрос. Мне нужно знать, как обойти эту проблему.

-1
Guy 22 Июн 2020 в 07:53

1 ответ

Лучший ответ

Вы можете сначала проверить 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
>>>
1
Tibebes. M 22 Июн 2020 в 05:24