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.

Question

En Python lambda est




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 absolue

  • la 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 1

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ée x.

  • setx(val) pour assigner une nouvelle valeur à la coordonnée x.

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.

Le programme suivant permet d’écrire du texte. Du au limitations de la tortue, nous pouvons écrire seulement les lettres minuscules et l’espace. Les signes de ponctuation ne sont pas possible.

Deux touches particuler sont disponible:

  • Enter pour placer le curseur vers une nouvelle ligne

  • Back pour reculer d’un caractère

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.