我遇到了这样的代码,并试图了解它是如何工作的。从sorted((的python文档中,key
参数接受一个函数,该函数接受一个参数,然后返回一个要在比较中使用的键。此代码正在为key
分配一个类。这怎么样?__lt__
是如何将x
和y
传递给它的?
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__方法,用于小于比较的