Почему пустая строка и 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