Le problème c'est le fait que le lambda n'est pas capable de capturer l'environnement (l'extérieur), on ne peut donc pas créer de closure[1] et c'est pour cela que ces fonctions anonymes sont castrées. Dans mon exemple effectivement c'est peu gênant, et tu t'en sors bien :) mais dans de nombreuses situations c'est la merde : par exemple quand tu veux brancher un callback, dans le callback typiquement tu voudras modifier la valeur d'une variable à l'extérieur du lambda, en Python tu es obligé d'utiliser globals().get() et globals().update() comme j'ai montré, ce qui donne un lambda très lourd. Sans compter que dans le cas d'une variable locale à la méthode dans laquelle le lambda est exécuté, a priori on ne peut tout simplement pas y accéder.
[^] # Re: Python et formes fonctionnelles
Posté par gc . En réponse au message de la puissance de (beep) pour trouver un truc simple en 2 minutes. Évalué à 2.
[1] http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?query=closure(...)