Pour les 4 fonctions suivantes:Python 3 toutes les fonctions de 1 ligne ne sont pas des lambdas?
def test1(a):
def result(b):
return a+b;
return result
def test2(a):
return lambda b: a+b
test3 = lambda a : lambda b : a+b
test4 = lambda a : (lambda b : a+b)
print(test1(2)(3))
print(test2(3)(4))
print(test3(5)(6))
print(test4(7)(8))
test1
fonctionne très bien test1(a)(b)
renvoie un + b
test2
fonctionne bien aussi test2(a)(b)
renvoie un + b
mais test3
et test4
donnent une erreur de syntaxe undefined variable a
pourquoi l'interprète peut-il trouver un dans test1 et 2 mais pas dans 3 ou 4?
Y at-il un moyen d'écrire la fonction de test en tant que lambda?
Essayez d'exécuter effectivement le code - cela fonctionne. – MatsLindh
Voir https://ideone.com/02s6h7 en cours d'exécution. –
@roganjosh c'est une version simplifiée de mon problème bien sûr. Je ne pensais pas avoir besoin de mettre les appels à 'test1' et' test2' explicitement dans mon post. (Mais j'ai essayé dans mon propre code). Si vous aimez je vais l'ajouter ici mais je pense que cela ajoute un fouillis inutile. – fejfo