Functions as Arguments
Leçon 3 sur 12 du cours Les décorateurs Python de Coddy.
En Python, nous pouvons passer une fonction en tant qu'argument à une autre fonction.
Par exemple,
def add_numbers(a, b):
return a + b
def multiply_numbers(a, b):
return a * b
def calculate(func, a, b):
return func(a, b)
result = calculate(add_numbers, 2, 3)
print(result) # Sortie : 5
result = calculate(multiply_numbers, 2, 3)
print(result) # Sortie : 6
Dans cet exemple, nous définissons deux fonctions : add_numbers et multiply_numbers.
Nous définissons ensuite une troisième fonction appelée calculate, qui prend une fonction func comme premier argument, ainsi que deux arguments supplémentaires a et b.
Lorsque nous appelons calculate, nous passons le nom de la fonction que nous voulons utiliser (soit add_numbers ou multiply_numbers) comme argument func, ainsi que les deux nombres sur lesquels nous voulons opérer.
La fonction calculate appelle ensuite la fonction func avec les deux nombres et renvoie le résultat.
Dans l'exemple ci-dessus, nous appelons calculate deux fois : une fois avec add_numbers et une fois avec multiply_numbers.
Le premier appel renvoie la somme de 2 et 3 (qui est 5), et le second appel renvoie le produit de 2 et 3 (qui est 6).
Défi
FacileÉcrivez une fonction appelée list_operator qui prend une liste d'entiers et une fonction opérateur comme arguments.
La fonction operator doit prendre deux entiers en entrée et retourner un seul entier en sortie.
La fonction list_operator doit appliquer la fonction opérateur à toutes les paires d'entiers adjacents dans la liste et retourner une nouvelle liste avec les résultats.
Voici un exemple de fonctionnement de la fonction :
>>> numbers = [1, 2, 3, 4, 5]
>>> result = list_operator(numbers, operator.add)
>>> result
[3, 5, 7, 9]
>>> numbers = [10, 20, 30, 40]
>>> result = list_operator(numbers, operator.mul)
>>> result
[200, 600, 1200]Contraintes
- La liste d'entrée contiendra toujours au moins deux entiers.
- La fonction opérateur prendra toujours deux entiers en entrée et retournera un seul entier en sortie.
Note ! La fonction opérateur est fournie par nous, vous n'avez pas besoin de la créer, utilisez-la simplement.
Essayez vous-même
Toutes les leçons de Les décorateurs Python
Entraînez-vous par vous-même : Compilateur Python en ligne