2017-06-28 2 views
0

Ich versuche, eine naive Curry-Funktion in Python 2.7 zu schreiben, aber es scheint, als hätte das innere Lambda keinen Zugriff auf den übergeordneten Lambda-Bereich.Curry in Python Lambdas

Der Einfachheit halber wollen wir diese Funktion übernehmen:

add = lambda a: lambda b: a + b 

Der Anwendungsbereich der inneren Lambda nicht die äußere zugreifen kann (Python kann a nicht erkennen).

Gibt es eine bequeme Möglichkeit, den äußeren Bereich zugänglich zu machen?

+3

Es funktioniert: '>>> add = Lambda x: Lambda b: b + x; >>> hinzufügen (5) (2); 7' –

Antwort

1

Dieses Beispiel scheint allerdings für mich in Python 2.7.11

add = lambda a: lambda b: a + b 
f = add(1) 
print f(2) 
3 
print f(10) 
11 

Kompliziertere Beispiele könnten umfallen zu arbeiten. Eine Lambda-Funktion speichert Verweise auf die Variablen im umschließenden Gültigkeitsbereich und nicht auf deren Werte. Dies könnte bei einem komplizierteren Problem helfen: https://stackoverflow.com/a/938493/8131703

+1

Wenn ja, sollte es ein Kommentar sein, keine Antwort. –