Функции, такие как sort, max или min, могут принимать аргументы типа key=, которые являются функциями и могут определять их поведение. Это делает встроенные функции sort и max гораздо более мощными и универсальными. Они могут использоваться во многих различных сценариях, нежели если бы они сравнивали только сами значения без аргумента key=.
Мы можем создавать и свои собственные функции высшего порядка:
Здесь мы передаем различные функции в качестве f в функцию высшего порядка modify. Функция modify создает новый список на основе входного и возвращает результат. Обратите внимание, что мы можем даже передать такую функцию, как str. Таким образом, к каждому элементу входного списка будет применена функция str() — str(2), str(0), str(1).
Задание
Реализуйте универсальную версию функции sum, названную generic_sum, которая будет принимать коллекцию в качестве первого аргумента (это может быть список, множество или список кортежей) и функцию в качестве второго аргумента, которая извлекает число из каждого элемента коллекции.