Introduction
La programmation fonctionnelle est un paradigme qui traite les fonctions comme des citoyens de première classe, ce qui signifie que les fonctions peuvent être assignées à des variables, transmises en tant qu’arguments et retournées par d’autres fonctions. En Python, vous pouvez écrire un code concis et expressif en utilisant des expressions lambda et des fonctions d’ordre supérieur telles que map
, filter
et reduce
. Ce tutoriel explique ces concepts et montre comment ils peuvent être utilisés pour écrire un code plus élégant et plus efficace.
Concepts de base
Fonctions de premier ordre
En Python, les fonctions sont des objets de première classe. Cela signifie que vous pouvez: - Assigner des fonctions à des variables. - Transmettre des fonctions en tant qu’arguments à d’autres fonctions. - Renvoyer des fonctions à partir d’autres fonctions.
Fonctions lambda
Les fonctions lambda sont des fonctions anonymes définies avec le mot-clé lambda
. Elles sont généralement utilisées pour des fonctions courtes, jetables, qui ne sont pas assez complexes pour justifier une définition de fonction complète.
Fonctions d’ordre supérieur
Les fonctions d’ordre supérieur sont des fonctions qui prennent d’autres fonctions comme arguments ou les renvoient comme résultats. Python fournit plusieurs fonctions d’ordre supérieur intégrées:
- map(): Applique une fonction à chaque élément d’une table itérative.
- filter(): Filtre les éléments d’une table itérative en fonction d’une condition.
- reduce(): Applique une fonction de manière cumulative aux éléments d’un itérable (disponible dans le module functools
).
Exemples : Python et R
Vous trouverez ci-dessous des exemples démontrant les concepts de la programmation fonctionnelle en Python, avec une comparaison avec R pour le contexte.
# Python : Fonction lambda et fonctions d'ordre supérieur
# Utiliser un lambda pour doubler un nombre
= lambda x: x * 2
double print("Double of 5 is:", double(5))
# Utilisation de map() avec un lambda pour doubler chaque élément d'une liste
= [1, 2, 3, 4, 5]
numbers = list(map(lambda x: x * 2, numbers))
doubled print("Doubled list:", doubled)
# Utilisation de filter() avec une lambda pour sélectionner les nombres pairs
= list(filter(lambda x: x % 2 == 0, numbers))
evens print("Even numbers:", evens)
# Utilisation de reduce() pour calculer le produit d'une liste de nombres
from functools import reduce
= reduce(lambda a, b: a * b, numbers)
product print("Product of numbers:", product)
# R : Fonctions anonymes et fonctions d'ordre supérieur
# Utilisation d'une fonction anonyme avec lapply pour doubler des nombres
<- c(1, 2, 3, 4, 5)
numbers <- lapply(numbers, function(x) x * 2)
doubled print("Doubled list:")
print(unlist(doubled))
# Utilisation de Filter() avec une fonction anonyme pour sélectionner les nombres pairs
<- Filter(function(x) x %% 2 == 0, numbers)
evens print("Even numbers:")
print(evens)
# Utilisation de Reduce() pour calculer le produit de nombres
<- Reduce(function(a, b) a * b, numbers)
product print("Product of numbers:")
print(product)
Conclusion
La programmation fonctionnelle en Python vous permet d’écrire du code concis, expressif et efficace. En exploitant les fonctions de première classe, les expressions lambda et les fonctions d’ordre supérieur telles que map
, filter
et reduce
, vous pouvez effectuer des opérations complexes de manière claire et compacte. Expérimentez ces concepts pour voir comment ils peuvent simplifier vos tâches de codage et améliorer la lisibilité du code.
Plus d’informations
- Python pour débutants : votre premier script
- Syntaxe et variables en Python
- Control Flow and Loops in Python
Bon codage et bonne exploration de la puissance de la programmation fonctionnelle en Python!
Explorer d’autres articles
Voici d’autres articles de la même catégorie pour vous aider à approfondir le sujet.
Réutilisation
Citation
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Programmation fonctionnelle en Python},
date = {2024-02-05},
url = {https://www.datanovia.com/fr/learn/programming/python/advanced/functional-programming.html},
langid = {fr}
}