Since cmp
has been removed, you can get the same functionality with
def cmp(a, b):
return (a > b) - (a < b)
def sign(a):
return (a > 0) - (a < 0)
It works for float
, int
and even Fraction
. In the case of float
, notice sign(float("nan"))
is zero.
Python doesn't require that comparisons return a boolean, and so coercing the comparisons to bool() protects against allowable, but uncommon implementation:
def sign(a):
return bool(a > 0) - bool(a < 0)