Aller au contenu principal

Fonctionnel

#Fonctionnel

Fonctions pures, immutabilité, fonctions d’ordre supérieur, récursion et évaluation paresseuse (aperçu).

#Exemple (map/filter/reduce en Python)

Purs vs impurs: viser des fonctions déterministes sans effets de bord, pour tester et composer.

#Exercice : Pipeline de traitement de données

Implémentez une pipeline de traitement de données en utilisant des fonctions pures et la composition pour transformer une liste de dictionnaires représentant des utilisateurs.

#Instructions

  1. Créez des fonctions pures pour chaque étape de transformation :
    • filter_adults(users): Filtrer les utilisateurs de 18 ans et plus.
    • normalize_names(users): Normaliser les noms (capitaliser la première lettre).
    • add_age_group(users): Ajouter un groupe d'âge ('young', 'adult', 'senior').
    • sort_by_name(users): Trier par nom.
  2. Implémentez une fonction compose pour composer plusieurs fonctions en une seule.
  3. Appliquez la pipeline à une liste d'utilisateurs.

#Exemple de code

pythonpython
1def filter_adults(users):2    return [user for user in users if user['age'] >= 18]3 4def normalize_names(users):5    return [{'name': user['name'].capitalize(), 'age': user['age']} for user in users]6 7def add_age_group(users):8    def get_age_group(age):9        if age < 30:10            return 'young'11        elif age < 60:12            return 'adult'13        else:14            return 'senior'