Des fonctions comme sort, max ou min peuvent prendre des arguments comme key= qui sont des fonctions et qui peuvent déterminer leur comportement. Cela rend les fonctions intégrées sort et max beaucoup plus puissantes et générales. Elles peuvent être utilisées dans bien plus de scénarios que si elles ne comparaient que les valeurs elles-mêmes sans l'argument key=.
Nous pouvons également créer nos propres fonctions d'ordre supérieur :
Ici, nous passons différentes fonctions en tant que f à la fonction d'ordre supérieur modify. La fonction modify crée une nouvelle liste à partir de celle d'entrée et renvoie le résultat. Notez que nous pouvons même passer une fonction comme str à la fonction. Ainsi, chaque élément de la liste d'entrée sera transformé par la fonction str() : str(2), str(0), str(1).
Défi
Implémentez une version générique de la fonction sum appelée generic_sum qui prendra une collection comme premier argument (il peut s'agir d'une liste, d'un ensemble ou d'une liste de tuples) et une fonction comme second argument qui obtient un nombre à partir de chaque élément de la collection.