Python 3 中刪除了 cmp 函式

在 Python 3 中, cmp 內建函式與 __cmp__ 特殊方法一起被刪除。

從文件:

cmp() 功能應被視為去,並且 __cmp__() 不再支援的特殊方法。使用 __lt__() 進行分類, __eq__() 使用 __hash__() ,並根據需要進行其他豐富的比較。 (如果你真的需要 cmp() 功能,你可以使用表示式 (a > b) - (a < b) 作為 cmp(a, b) 的等價物。)

此外,所有接受 cmp 引數的內建函式現在只接受 key 關鍵字引數。

functools 模組中還有一個有用的功能 cmp_to_key(func) ,它允許你從 cmp 風格的功能轉換為 key 風格的功能:

將舊式比較功能轉換為關鍵功能。與接受關鍵功能的工具一起使用(例如 sorted()min()max()heapq.nlargest()heapq.nsmallest()itertools.groupby() )。此函式主要用作從 Python 2 轉換的程式的轉換工具,它支援使用比較函式。