Le paradigme de programmation fonctionnelle se caractérise essentiellement par l'absence d'effets de bord.
Pour cela, le code défini à l'intérieur d'une fonction :
a = 0 def augmenter(): global a a = a + 1
Explications :
def increment(a): return a + 1
Explications :
La programmation fonctionnelle est particulièrement intéressant pour intervenir sur des listes. Les exemple qui suivent s'appuie sur la liste de Todos suivantes :
taches = [{"id":"1","libelle":"Préparer mon sac", "accomplie":True}, {"id":"2","libelle":"Prendre mon petit-déjeuner", "accomplie":False}, {"id":"3","libelle":"Partir au lycée", "accomplie":False}]
Voici l'utilisation de la fonction map pour avoir une nouvelle liste tachesfinies avec toutes les tâches finies :
# definition de la fonction qui met la valeur True pour la donnée acccomplie def fini(tache): return {"id":tache["id"],"libelle":tache["libelle"], "accomplie":False} #nouvelle liste avec toutes taches accomplies tachesfinies = list(map(fini,taches))
Il est possible d'utiliser une fonction anonyme lambda directement dans la fonction map :
# utilisation d'une fonction anonyme lambda #nouvelle liste avec toutes taches accomplies tachesfinies = list(map(lambda tache: {"id":tache["id"],"libelle":tache["libelle"], "accomplie":False}, taches))
Les fonctions lambda sont des fonctions anonymes, c'est à dire des fonctions qui n'ont pas de nom. Une fonction anonyme : * est définie à l'aide du mot-clef lambda ; * les paramètres de la fonction lambda sont définis à gauche du caractère deux-points :
Une fonction anonyme peut être placée :
Exemple avec une variable :
# definition de la fonction anonyme et affectation dans la variable fois2 fois2 = lambda x: x * 2 #utilisation >>> print(fois2(4)) >>> 8
Même résultat avec un générateur :
#nouvelle liste avec les taches modifiées pour les indiquer accomplies (finies) tachesfinies = [fini(tache) for tache in taches]
Explications :
somme = reduce(lambda a, x: a + x, tableau, 50)
====== Trier des listes ====== <code python> taches.sort(key=lambda tache: tache[“id”], reverse=True) </code> * le paramètre key permet de préciser sur quelle données trier ; * le paramètre reverse permet de changer l'ordre du tri. ==== Retour au cours : Les instructions du langage Python ====