为了账号安全,请及时绑定邮箱和手机立即绑定

任务题中,cmp()本身不是python中内置的一个函数吗?为什么还要用用匿名函数定义?

答案中的代码:

functools.partial(sorted,cmp=lambda s1,s2: cmp(s1.upper(),s2.upper()))

不大明白的是为什么要写成cmp=...这样子,cmp本身就是一个内置函数,为何要再次定义呢?求大神解答,感激不尽~

正在回答

3 回答

sorted,cmp=lambda s1,s2: cmp(s1.upper(),s2.upper())
#官方给出的functools.partial的用法为:functools.partial(模板,默认参数),
#你可以看为,functools.partial(你要做什么的函数,你要设置好的默认参数)
#这里就是要做sorted(内置了的函数),后面的cmp=lambda s1,s2: cmp(s1.upper(),s2.upper(),就是你设置的默认参数
#而cmp = lambda,相当于把cmp这个比较函数重新定义了一次,使用匿名函数,只是为了简化代码
#可以回头看看,第10小节有提到:返回函数的时候,也可以返回匿名函数


5 回复 有任何疑惑可以回复我~

因为要使用偏函数,实现调用原函数时候可以尽可能少的输入默认参数,因此使用functools.pratial()来为sorted,指定默认值,这里把sorted(list,cmp)中的cmp用匿名函数的方式进行指定,这样再调用sorted函数的时候可以不用指定cmp或者利用系统内置函数的规则进行排序,也就实现了自由排序。

1 回复 有任何疑惑可以回复我~

根据需求重写了cmp方法而已

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

任务题中,cmp()本身不是python中内置的一个函数吗?为什么还要用用匿名函数定义?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信