Единственное значимое сравнение, которое вы действительно можете использовать с None
, это if obj is None:
(или if obj is not None:
).
Сравнение между различными типами было удалено из Python 3 по веским причинам - они были распространенным источником ошибок и приводили к путанице. Например
>>> "3" < 4
False
В Python 3 вы получаете TypeError
при сравнении значений разных типов, таких как str
против int
или чего-либо против None
.
>>> None < 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: NoneType() < int()
(Я имею в виду «сравнение» в смысле попытки определить, какое из двух значений больше / меньше. Сравнение на равенство в порядке - оно всегда вернет False
, если два объекта имеют разные типы.)
Я не нашел ссылки в документации на это, но в Learning Python, 4-е издание , Марк Лутц пишет на странице 204:
[...] Сравнение объектов разного типа (например, строка и
список) работа - язык определяет фиксированный порядок среди различных
типы, которые являются детерминированными, если не эстетически приятными. То есть,
порядок основан на именах участвующих типов: все целые
меньше, чем все строки, например, потому что "int"
меньше
"str"
.