Seite 1 von 1
lambda tut nicht was ich will
Verfasst: Samstag 10. Januar 2009, 21:47
von snafu
Hallo!
Es ist doch eigentlich mit lambda möglich, bestimmte Befehle an einen Namen zu binden, um den Befehl erst später aufrufen zu können, oder? Ich habe jetzt mal das probiert:
Code: Alles auswählen
>>> bla = lambda: print 'bla'
File "<stdin>", line 1
bla = lambda: print 'bla'
^
Ganz banal gefragt: Warum geht das nicht?
Hinweis: Ich habe lambda bisher nie benutzt.
Verfasst: Samstag 10. Januar 2009, 21:52
von Rebecca
Du kannst nicht alles in Lambdas-Konstrukte packen, so geht print beispielsweiset nicht. Nur das, was auf der rechten Seite einer Zuweisung stehen kann, kannst du reinschreiben:
Code: Alles auswählen
>>> bla = lambda: "blupp"
>>> bla = lambda x: x+1
>>> bla = lambda x, y: x+y
Verfasst: Samstag 10. Januar 2009, 21:52
von Birne94
kurz und knapp, lambda kann kein print oO
edit:
http://www.secnetix.de/olli/Python/lamb ... tions.hawk
schau da mal
Verfasst: Samstag 10. Januar 2009, 21:59
von numerix
Birne94 hat geschrieben:kurz und knapp, lambda kann kein print oO
Stimmt so nicht - du musst einfach das *richtige* Python nehmen ...
Verfasst: Samstag 10. Januar 2009, 22:00
von Birne94
stimmt, lambda hat glaub nur nen problem mit schlüsselwörtern, oder?
Verfasst: Samstag 10. Januar 2009, 22:01
von snafu
Hehe, genau die Seite hatte ich kurz davor auch offen. Aber da wurde mir nicht klar, dass "print" nicht geht. Vielleicht weil es ein Statement ist? Hab's allerdings auch nur überflogen. Danke für die Hinweise.

Verfasst: Samstag 10. Januar 2009, 22:52
von Leonidas
Birne94 hat geschrieben:stimmt, lambda hat glaub nur nen problem mit schlüsselwörtern, oder?
Nein, nicht mit Schlüsselwörtern sondern allgemein mit Statements. Man kann also in Lambdas nur Expressions verwenden.
Persönlich nutze ich in Python eigentlich nie Lambdas, in Scheme dagegen ständig. Aber dort sind sie auch nicht so unbrauchbar
