2013-12-13 2 views
0

Я только что наткнулся на это поведение, но не видел его объяснения нигде. Я думаю, что float('-inf') должно быть меньше 0.Правильно ли это для cmp()?

>>> cmp(0, float('-inf')) 
1 
+3

Как вы думаете, CMP возвращается? сравните с cmp (0, 1), например – alko

ответ

7

float('-inf')является меньше 0.

cmp() возвращает положительное значение, когда первый аргумент больше второго. Поскольку float('-inf') меньше 0, что также означает, что 0 больше float('-inf') так что вы бы ожидать cmp() вернуть 1.

От cmp() documentation:

Сравнить два объекта х и у и возвращают целое число, в зависимости от результата. Возвращаемое значение отрицательно, если x < y, ноль, если x == y и строго положительный, если x > y.

, а также просто проверить:

>>> cmp(0, -1) 
1 
+0

Глупый я, надеюсь, я сэкономлю кого-то другого от запроса. – dansalmo

1

Это может помочь узнать, что cmp(a, b) существу знак a-b. Таким образом, это +1, если a > b, -1, если a < b, и 0, если a == b.

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