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 转换的程序的转换工具,它支持使用比较函数。