为什么可以将类传递给 Python 的 sorted() 函数的键属性?

  • 本文关键字:sorted 函数 属性 Python python
  • 更新时间 :
  • 英文 :


我遇到了这样的代码,并试图了解它是如何工作的。从sorted((的python文档中,key参数接受一个函数,该函数接受一个参数,然后返回一个要在比较中使用的键。此代码正在为key分配一个类。这怎么样?__lt__是如何将xy传递给它的?

class K(str):
def __lt__(x, y):
return x > y
input = [3, 30, 7]
sorted(input, key=K)

输出:[7, 30, 3]

python使用duck类型,所以它不检查键是否是函数,只调用它。键参数用于排序,以确定要比较的内容。在这种情况下,不是比较[3,30,7],而是比较[K(3(,K(30(,K(7(]。这也是为什么实现了一个__lt__方法,用于小于比较的

最新更新