Почему пустая строка и None оцениваются по-разному?

Почему эти двое оценивают по-разному?

In [34]: a = ''

In [35]: if a or a >=0:
    print 'y'
    ....:     
y

In [36]: a = None

In [37]: if a or a >=0:
    print 'y'
    ....:     

Я думал, что пустая строка также оценивается как None (я знаю, что они не совпадают)? Или это просто ложь и, таким образом, оценивается в 0 (который затем оценивается в None, если тестируется как if a: do something)?

1 ответ

Это потому что в CPython int приходит раньше string

из документов:

Детали реализации CPython: объекты разных типов, кроме чисел, упорядочены по именам типов; объекты тех же типов, которые не поддерживают правильное сравнение, упорядочены по их адресу.

так:

>>> '1' > 1
True
Другие вопросы по тегам