Существует ли встроенный тип данных Python,  кроме None, для которого:
>>> not foo > None
True
где foo - значение этого типа? Как насчет Python 3?
Существует ли встроенный тип данных Python,  кроме None, для которого:
>>> not foo > None
True
где foo - значение этого типа? Как насчет Python 3?
 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).
Из источника Python  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. Добавлен номер версии.