
Envoyé par
tomsawyer1311
Je ne connais pas bien le mot clé lambda. Qu'apporte cette écriture par rapport à une définition de fonction, mise à part moins de lignes de code ?
C'est pas le mot clef lambda qui est important mais la compréhension de liste: [ i for i, ch in enumerate(s) if ch == letter ] qui revient écrire classiquement (avec une fonction normale):
1 2
| def look_for_letter(s, letter):
return [ i for i, ch in enumerate(s) if ch == letter ] |
Et si on peut le faire, c'est parce qu'on retourne une liste dans tous les cas (éventuellement une liste vide).
Et de là au "lambda":
look_for_letter = lambda s, letter: [ i for i, ch in enumerate(s) if ch == letter ]
Qu'est ce qu'apporte tout çà?
Un programme, c'est un tas de fonctionnalités à agencer. Qui dit "tas", dit plein de lignes de code où il va falloir discerner l'essentiel, le flux général. Et tout ce qui peut être réduit ainsi se lira bien plus facilement car très "carré".
Lorsqu'on débute çà n'a pas grande importance: c'est vous qui avez écrit le code, et quand il y a rarement plus de quelques centaines de lignes. Mais si vous devez lire/comprendre le code écrit pas d'autres pour trouver la cause d'un "bug", vous verrez qu'il est bien plus agréable de travailler sur/lire un code concis.
- W
Partager