比較我發現下面的Python代碼here:古典與豐富的Python
def cmp_lt(x, y):
# Use __lt__ if available; otherwise, try __le__.
# In Py3.x, only __lt__ will be called.
return (x < y) if hasattr(x, '__lt__') else (not y <= x)
我真的不明白這個函數所做的事情。顯然我在這裏錯過了一個微妙之處,因爲我沒有得到x<y
與not y<=x
之間的差別,並且在這兩個語句的設置下,這兩個語句會返回不同的結果,更不用說爲什麼我們需要考慮這一點。經過谷歌搜索,我知道__lt__
和__le__
與豐富的比較有關,但就是這樣。
代碼中的註釋應該是相當豐富的 –