lambda tut nicht was ich will

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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
Zuletzt geändert von Rebecca am Samstag 10. Januar 2009, 21:53, insgesamt 1-mal geändert.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Birne94
User
Beiträge: 90
Registriert: Freitag 28. November 2008, 15:18
Kontaktdaten:

kurz und knapp, lambda kann kein print oO

edit: http://www.secnetix.de/olli/Python/lamb ... tions.hawk
schau da mal
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Birne94 hat geschrieben:kurz und knapp, lambda kann kein print oO
Stimmt so nicht - du musst einfach das *richtige* Python nehmen ... :)

Code: Alles auswählen

>>> bla = lambda:print("bla")
>>> bla()
bla
>>> 
Birne94
User
Beiträge: 90
Registriert: Freitag 28. November 2008, 15:18
Kontaktdaten:

stimmt, lambda hat glaub nur nen problem mit schlüsselwörtern, oder?
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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. :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten