2. Formaliser - lambda
¶
Dans ce chapitre nous découvrons la fonction lambda
. C’est une façon de créer une fonction anonyme (sans nom). Une fonction lambda est composée d’un certain nombre de variables, suivi d’une expression qui utilise ces variables. Nous allons voir que :
le mot-clé
lambda
permet de définir une fonction anonyme,l’expression
lambda x : expression
produit une fonction,la fonction
lambda
peut comporter zéro ou plusieurs variables.
2.1. Fonction lambda¶
Parfois nous avons besoin d’une petite fonction, sans que ça vaille la peine de la définir de façon explicite avec le mot clé def
et un nom de fonction.
Parfois nous avons juste besoin d’une fonction anonyme (sans nom). Une telle fonction s’appelle une fonction lambda. Voici le même exemple cette fois avec une fonction anonyme.
La fonction lambda en tant qu’objet, peut être affectée à une variable.
2.2. Visualiser¶
L’utilisation principale de la fonction lambda est pour les fonctions qui demandent comme argument une fonction.
Jusqu’à maintenant les arguments de nos fonctions étaient des valeurs tels que: nombres, angles, distances, couleurs.
Avoir une fonction comme argument est nouveau. Pour montrer ce nouveau principe, nous allons définir la fonction tracer()
. Elle prend comme argument une fonction f
qu’elle va évaluer dans un intervalle [-300, 300].
2.3. Exemples de fonctions¶
Voici encore 3 exemples de fonctions
la fonction
abs()
renvoie la valeur absoluela fonction constante renvoie la valeur 100 partout
la fonction modulo renvoie une trace en dent de scie
2.4. Fonction quadratique¶
La fonction tracer()
permet de tracer une fonction f()
dans un intervalle [-300, 300]. Nous traçons deux équations quadratiques.
2.5. La fonction de rappel¶
Revenons vers notre tout premier programme avec la fonction onkey()
. Nous voulons faire avancer la tortue quand la touche a
est appuyée. Nous sommes tentés de simplifier le programme et d’écrire ceci. Essayez-le, mais malheureusement ça ne fonctionne pas.
C’est ici que la fonction lambda
est très pratique. Nous pouvons créer une fonction anonyme (sans nom) et la passer comme argument directement dans onkey()
.
Exercice : Faites avancer la tortue avec la touche a
.
2.6. Bouger la tortue¶
Avec la fonction lambda, notre programme de définition des fonctions de rappel devient beaucoup plus compact. Nous utilisons les fonctions :
xcor()
pour lire la position actuelle de la coordonnéex
.setx(val)
pour assigner une nouvelle valeur à la coordonnéex
.
Comme cette dernière fonction n’agit pas sur l’orientation de la souris, nous choisissons le disque (circle
) comme forme pour la tortue.
2.7. Mettre tout ensemble¶
Faisons maintenant un programme qui met ensemble tout ce que nous avons vu dans le chapitre précédent dans un seul programme.
2.8. Écrire un nombre¶
Nous pouvons utiliser les touches pour écrire dans le canevas de la tortue. Pour avancer la tortue avec chaque lettre, nous choisissons l’option move=True
.
Il est nécessaire de définir une fonction de rappel pour chaque touche du clavier que nous voulons utiliser.
La fonction lambda nous permet de simplifier aussi la création des fonctions de rappel. Nous pouvons les créer dans une boucle, en parcourant une chaine de caractères auxquels nous voulons associer une fonction de rappel. Nous utilisons ici l’astuce de la valeur par défaut, pour passer un argument à la fonction f()
.
Ce programme interactif permet d’utiliser les 10 chiffres pour écrire un nombre.
2.9. Écrire des lettres¶
Ce programme interactif permet d’utiliser les 26 lettres pour écrire un mot.
2.10. Écrire des couleurs¶
Ce programme permet d’utiliser les 26 touches de l’alphabet pour écrire des pixels avec des couleurs aléatoires.