Python中是否有某種關鍵字可以使用,它可以在邏輯上與總是錯誤的比較?Python - 將數字與布爾值進行比較(總是返回false)
例如,我想是這樣
None > 20
要評估時返回false。除了None
之外,還有一些關鍵字可以使用,因爲比較NoneType和Integer會引發錯誤?
Python中是否有某種關鍵字可以使用,它可以在邏輯上與總是錯誤的比較?Python - 將數字與布爾值進行比較(總是返回false)
例如,我想是這樣
None > 20
要評估時返回false。除了None
之外,還有一些關鍵字可以使用,因爲比較NoneType和Integer會引發錯誤?
我不認爲有一個內置的對象,這樣做,但你總是可以讓你自己:
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)
結果:
False
False
False
False
False
編輯:我記得一個內置的方法來做到這一點。如果你只需要比較普通的數字,你可以使用特殊的「非數字」的浮點值:
x = float("nan")
print(x < 20)
print(x <= 20)
print(x > 20)
print(x >= 20)
print(x == 20)
結果:
False
False
False
False
False
如果您特別只想x > 20
返回false並不特別關心其他比較返回的內容,因此使用特殊的「負無窮」浮點值可能更有意義。
>>> x = float("-inf")
>>> x > 20
False
當用於不等式操作時,float(「nan」)是否也返回false?我需要它返回false爲'float(「nan」)!= 20' – johnsmith101
讓我們看看......不,'float(「nan」)!= 20'評估爲True。看起來你畢竟需要定義自己的類型。 (不要忘記給'__le__ = __eq__ = ...'鏈添加'__ne__') – Kevin
你能詳細說明你到底想要達到什麼目的嗎? 。 .some context –
@MosesKoledoye我有一些邏輯,如果某些條件得到滿足,它將字典中的鍵的值設置爲「無」。後來,我使用'eval'來評估一些布爾邏輯,然後嘗試比較'None> 20'(或其他數字)。實際上,我通過將eval放入try/except塊並傳遞TypeError來解決此問題,但我不確定這是否是實現此目的的最佳方法。 – johnsmith101