Единственное ограничение состоит в том, что возвращаемые значения должны быть сопоставимы; они должны поддерживать <
, >
, <=
, >=
и ==
тестов.
В Python 2, все сопоставимо со всем остальным, что делает ограничение довольно спорным.
В Python 3 есть больше ограничений на то, что делает ценности сопоставимыми; например, сопоставления между объектами разных типов не поддерживаются, поэтому вы не хотите возвращать типы микса.
Обратите внимание, что это не что-то особенное для функции key
; те же ограничения применяются к сортируемым значениям, см. Comparisons documentation. Все, что делает функция key
, позволяет вам предоставить значение «stand-in» для сортировки вместо фактического значения в данной позиции.
«Сравнение между объектами разных типов не поддерживается» -> Собственно, это не совсем так; встроенные типы не поддерживают его, но вполне возможно написать собственный класс, который знает, как это сделать. – kindall
@kindall: Конечно, я упрощал ради читаемого ответа здесь. –
Fairy nuff, spose! – kindall