2014-12-02 2 views
0

Я стараюсь (в Python 2.7.6):Почему `()> ''> []> {}> 0> None` в Python 2.7?

() > '' > [] > {} > 0 > None

И это возвращает

True

Почему это так?

+2

Вопрос, почему эти типы сопоставимы вообще или почему выбран конкретный заказ? –

ответ

1

Это несчастный случай истории.

Это фиксируется в Python 3:

>>>() > '' > [] > {} > 0 > None 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unorderable types: tuple() > str() 

Или, другими словами, упорядочение было решено, но нет никакого особого логического/техническая причина, почему они должны заказать этот путь и не по-другому. Чтобы избежать путаницы типов больше не может сравниться в этом порядке в Python 3.

В документации Python 2 я мог только найти:

объектов различных типов, кроме различных числовых типов и различных типов строк , никогда не сравнивайте равных; такие объекты упорядочиваются последовательно, но произвольно (так что сортировка гетерогенного массива дает согласованный результат).

Смежные вопросы