Если я сделаю следующее
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
Похожие вопросы
Связанные вопросы
Новые вопросы
python-3.x
НЕ ИСПОЛЬЗУЙТЕ, ЕСЛИ ВАШ ВОПРОС ТОЛЬКО ДЛЯ PYTHON 3. Всегда используйте вместе со стандартным тегом [python].