You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类含双下划线函数报错:Undefined name 'cmp' 如何修正?

解决Python3中“Undefined name 'cmp'”报错的方法

问题根源

cmp是Python 2的内置比较函数,Python 3已移除该函数,所以在Python 3环境(Spyder默认一般为Python3)运行遗留代码会触发这个错误。

修正方案

根据代码中cmp的使用场景,选择对应方法:

场景1:cmp作为参数传入排序类函数(如sorted()、list.sort())

比如原代码类似:

sorted_list = sorted(my_list, cmp=my_compare_func)

需要借助functools模块的cmp_to_key工具,将老式比较函数转换为Python3支持的key函数:

  1. 先导入模块:
import functools
  1. 修改排序代码:
sorted_list = sorted(my_list, key=functools.cmp_to_key(my_compare_func))

场景2:直接调用cmp(a, b)获取比较结果

可以自己实现一个替代cmp的函数,放在代码开头:

def cmp(a, b):
    # 模拟Python2中cmp的行为:a>b返回1,a==b返回0,a<b返回-1
    return (a > b) - (a < b)

之后代码中调用cmp(a,b)就可以正常运行。

内容的提问来源于stack exchange,提问作者tunar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:40:31