Python - 用布尔值比较数字(总是返回false)

joh*_*101 1 python logic boolean compare

是否有某种关键字可以在Python中使用,可以在逻辑上进行比较,始终是假的?

例如,我想要类似的东西

None > 20
Run Code Online (Sandbox Code Playgroud)

在评估时返回false.除此之外是否还有一些关键字None可用,因为比较NoneType和Integer会引发错误?

Kev*_*vin 5

我不认为有一个内置的对象可以做到这一点,但你总是可以自己创建:

class Thing:
    def __lt__(self, other):
        return False
    #use the same function for <=, ==, >, etc
    __le__ = __eq__ = __gt__ = __ge__ = __lt__

x = Thing()
print(x < 20)
print(x <= 20)
print(x > 20)
print(x >= 20)
print(x == 20)
Run Code Online (Sandbox Code Playgroud)

结果:

False
False
False
False
False
Run Code Online (Sandbox Code Playgroud)

编辑:我记得一种内置的方法来做到这一点.如果只需要与普通数字进行比较,则可以使用特殊的"非数字"浮点值:

x = float("nan")
print(x < 20)
print(x <= 20)
print(x > 20)
print(x >= 20)
print(x == 20)
Run Code Online (Sandbox Code Playgroud)

结果:

False
False
False
False
False
Run Code Online (Sandbox Code Playgroud)

如果你特别想要x > 20返回False并且不特别关心其他比较返回的内容,那么使用特殊的"负无穷大"浮点值可能更有意义.

>>> x = float("-inf")
>>> x > 20
False
Run Code Online (Sandbox Code Playgroud)