这对cmp()是否正确?

时间:2013-12-13 22:45:16

标签: python

我刚刚遇到过这种行为,但没有看到它在任何地方解释过。我认为float('-inf')应该小于0.

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

2 个答案:

答案 0 :(得分:7)

float('-inf') 小于0

当第一个参数大于第二个参数时,

cmp()返回正值。由于float('-inf')小于0,这也意味着0大于float('-inf')因此您期望 cmp()返回1

来自cmp() documentation

  

比较两个对象 x y 并根据结果返回一个整数。如果x < y,则返回值为负,如果x == y,则返回值为零;如果x > y,则返回值为正。

并且还简单地验证了:

>>> cmp(0, -1)
1

答案 1 :(得分:1)

了解cmp(a, b)基本上是a-b的标志可能会有所帮助。因此,a > b为+1,a < b为-1,a == b为0。