Все больше никто? [дубликат]
этот вопрос уже есть ответ здесь:
- Несколько меньше, чем минус бесконечность в Python? 1 ответ
есть ли встроенный тип данных Python,кроме того None для которых:
>>> not foo > None
True
здесь foo является ли значение этого типа? Как насчет Python 3?
2 ответа:
Noneвсегда меньше, чем любой тип данных в Python 2 (см.object.c).в Python 3 это было изменено; теперь выполнение сравнений по вещам без разумного естественного упорядочения приводит к
TypeError. Из 3.0 "что нового" обновления:Python 3.0 упростил правила для упорядочивания сравнений:
операторы сравнения заказов (
<,<=,>=,>) поднятьTypeErrorисключение, когда операнды не имеют значимого естественного порядка. Таким образом, выражения типа:1 < '',0 > Noneилиlen <= lenбольше не действительны, и, например,None < NoneподнимаетTypeErrorвместо возвратаFalse. Следствием этого является то, что сортировка гетерогенного списка больше не имеет смысла – все элементы должны быть сопоставимы друг с другом. Обратите внимание, что это не относится к==и!=операторы: объекты различных несравнимых типов всегда сравниваются неравные друг другу.это расстроило некоторых людей, так как часто было удобно делать такие вещи, как сортировать список, который имел некоторые
Noneзначения в нем, и естьNoneзначения сгруппированы вместе в начале или в конце. в списке рассылки была тема об этом некоторое время назад, но конечная точка заключается в том, что Python 3 пытается избежать принятия произвольных решений о заказе (что и произошло в Python 2).
из питона 2.7.5 источник (
object.c):static int default_3way_compare(PyObject *v, PyObject *w) { ... /* None is smaller than anything */ if (v == Py_None) return -1; if (w == Py_None) return 1; ... }EDIT добавлен номер версии.