で Python 2.6 möchte ich tun:
f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception
Das ist eindeutig nicht die Syntax. Ist es möglich, eine if
en lambda
und wenn ja, wie kann man das tun?
で Python 2.6 möchte ich tun:
f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception
Das ist eindeutig nicht die Syntax. Ist es möglich, eine if
en lambda
und wenn ja, wie kann man das tun?
Lambdas in Python sind ziemlich restriktiv in Bezug auf das, was Sie verwenden dürfen. Insbesondere können Sie keine Schlüsselwörter verwenden (außer für Operatoren wie and
, not
, or
usw.) in ihrem Körper.
Es gibt also keine Möglichkeit, ein Lambda für Ihr Beispiel zu verwenden (denn Sie können nicht mit raise
), aber wenn du bereit bist, das zuzugeben Du könntest es benutzen:
f = lambda x: x == 2 and x or None
Sie können auch logische Operatoren verwenden, um so etwas wie eine bedingte
func = lambda element: (expression and DoSomething) or DoSomethingIfExpressionIsFalse
Mehr über logische Operatoren erfahren Sie ici
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
In einem Lambda kann man nicht drucken oder erhöhen. Lambdas sind nur Funktionen, Sie können stattdessen immer eine Funktion verwenden.
11 Stimmen
Ich bin anderer Meinung als Sie. Ich brauche 4 verschiedene, sehr kurze Funktionen wie die oben genannten, die in eine Liste/Wörterbuch gesetzt werden müssen, so dass ich über sie iterieren kann und auswählen, welche in jeder Iteration zu verwenden. Anstelle von vielen Zeilen Code von nur inits, vor der Iteration, selbst kann ich es auf nur 4 Zeilen von Init-Code zu bringen. Je weniger, desto besser
6 Stimmen
4 Zeilen Code sind keine lobenswerte Lösung, wenn andere Leute den Code lesen, interpretieren, verstehen und pflegen müssen. Außerdem zeigt das "print/raise"-Problem in dem Beispiel, dass dies in Lambdas nicht möglich ist und auch nicht sein sollte.
0 Stimmen
@LennartRegebro lambdas sind keine Funktionen in Python, sie sind nur Ausdrücke, deshalb gibt es viele Dinge, die man nicht mit ihnen machen kann.
3 Stimmen
@AaronMcMillin Lambdas sind Funktionen. Sie sind aus Gründen der Syntax auf Ausdrücke beschränkt, aber sie SIND Funktionen.
0 Stimmen
Ich denke, der wichtigste Punkt ist, dass Lambdas nicht wie Funktionen im Speicher gehalten werden, sie sind generische Funktionen, die ausgewertet und verworfen werden. Wenn Sie Funktionen in einer Schleife durchlaufen wollen, benötigen Sie eine dauerhaftere Struktur wie ein Ereignis.