Appliquer une fonction de manière conditionnelle

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/BasicConceptsGroup -.-> python/comments("Comments") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/lambda_functions("Lambda Functions") subgraph Lab Skills python/comments -.-> lab-13742{{"Appliquer une fonction de manière conditionnelle"}} python/conditional_statements -.-> lab-13742{{"Appliquer une fonction de manière conditionnelle"}} python/tuples -.-> lab-13742{{"Appliquer une fonction de manière conditionnelle"}} python/function_definition -.-> lab-13742{{"Appliquer une fonction de manière conditionnelle"}} python/lambda_functions -.-> lab-13742{{"Appliquer une fonction de manière conditionnelle"}} end

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.