Вопрос по функции. Python
nums = input().split()
def cmp(num):
return sum([int(i) for i in num])
nums.sort(key=cmp)
print(*nums)
Функция принимает строку чисел и возвращает отсортированный список чисел в порядке неубывания суммы их цифр.
Что вызвало функцию в этой программе? Как передалось значение аргументу num? Объясните, пожалуйста.
Спасибо за ответ!
Ответы (1 шт):
Функция sort неявно вызвала функцию cmp, потому что эта функция указана в качестве ключа для сортировки списка.
Как это работает?
Функции передали список на сортировку, но ей нужно знать по какому условию это делать, это необязательно по возрастанию или по убыванию, можно сделать это условие опциональным, как и в данном случае.
Происходит это следующим образом: "под капотом" вызывается функция cmp для каждого значения в списке, затем список сортируется по убыванию в соответствии с тем, какой результат возвратила функция для каждого элемента.
В данном случае в качестве ключа сортировки являлась сумма цифр в числе.