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.
Benutzeravatar
snafu
User
Beiträge: 5389
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

lambda tut nicht was ich will

Beitragvon snafu » Samstag 10. Januar 2009, 21:47

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

Beitragvon Rebecca » Samstag 10. Januar 2009, 21:52

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:

Beitragvon Birne94 » Samstag 10. Januar 2009, 21:52

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

Beitragvon numerix » Samstag 10. Januar 2009, 21:59

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:

Beitragvon Birne94 » Samstag 10. Januar 2009, 22:00

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

Beitragvon snafu » Samstag 10. Januar 2009, 22:01

Birne94 hat geschrieben:http://www.secnetix.de/olli/Python/lambda_functions.hawk


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. :)
shcol (Repo | Doc | PyPi)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 10. Januar 2009, 22:52

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 Modvoice

Wer ist online?

Mitglieder in diesem Forum: martinjo