Introduction
En Python, les fonctions sont des objets de première classe, ce qui signifie qu'elles peuvent être passées comme n'importe quelle autre valeur. Une application pratique de ceci est d'appliquer conditionnellement une fonction à une valeur en fonction d'un prédicat. Dans ce défi, vous devrez écrire une fonction qui prend une fonction prédicat et une fonction à appliquer lorsque le prédicat est vrai, et renvoie une nouvelle fonction qui applique la fonction lorsque le prédicat est vrai.
Appliquer une fonction lorsque c'est vrai
Écrivez une fonction appelée when qui prend deux arguments : une fonction prédicat predicate et une fonction à appliquer when_true. La fonction when devrait renvoyer une nouvelle fonction qui prend un seul argument x. La nouvelle fonction devrait vérifier si la valeur de predicate(x) est True. Si c'est le cas, la nouvelle fonction devrait appeler when_true(x) et renvoyer le résultat. Sinon, la nouvelle fonction devrait renvoyer x.
def when(predicate, when_true):
return lambda x: when_true(x) if predicate(x) else x
double_even_numbers = when(lambda x: x % 2 == 0, lambda x : x * 2)
double_even_numbers(2) ## 4
double_even_numbers(1) ## 1
Résumé
Dans ce défi, vous avez écrit une fonction qui applique conditionnellement une fonction à une valeur en fonction d'un prédicat. Il s'agit d'une technique utile pour créer du code plus flexible et réutilisable.