Estaba refactorizando un código antiguo mío y me encontré con esto:
alist.sort(cmp_items)
def cmp_items(a, b):
if a.foo > b.foo:
return 1
elif a.foo == b.foo:
return 0
else:
return -1
El código funciona (¡y lo escribí hace unos 3 años!), Pero no puedo encontrar esto documentado en ningún lugar de los documentos de Python y todos lo usan sorted()
para implementar la clasificación personalizada. ¿Alguien puede explicar por qué funciona esto?
sorted()
ysort()
ofrecer clasificación personalizada de la misma manera, modulo la diferencia en la convención de llamadas.