Ja, Python-Lambda-Ausdrücke können keine Anweisungen enthalten. Bevor wir uns mit den Gründen befassen, wollen wir verstehen, was Lambda ist, seine Ausdrücke und Aussagen.
Lambda-Ausdrücke ermöglichen die Definition anonymer Funktionen. Eine Lambda-Funktion ist eine anonyme Funktion ohne Namen. Schauen wir uns die Syntax an −
lambda arguments: expressions
Das Schlüsselwort Lambda definiert eine Lambda-Funktion. Ein Lambda-Ausdruck enthält einen oder mehrere Parameter, kann jedoch nur einen Ausdruck haben.
Schauen wir uns ein Beispiel an −
myStr = "Thisisit!" (lambda myStr : print(myStr))(myStr)
Thisisit!
In diesem Beispiel sortieren wir die Liste basierend auf den Werten einer anderen Liste, d. h. die zweite Liste wird nach ihrem Index in der sortierten Reihenfolge sortiert -
# Two Lists list1 = ['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai'] list2 = [2, 5, 1, 4, 3] print("List1 = \n",list1) print("List2 (indexes) = \n",list2) # Sorting the List1 based on List2 res = [val for (_, val) in sorted(zip(list2, list1), key=lambda x: x[0])] print("\nSorted List = ",res)
List1 = ['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai'] List2 (indexes) = [2, 5, 1, 4, 3] Sorted List = ['Audi', 'BMW', 'Hyundai', 'Tesla', 'Toyota']
Wir haben oben zwei Beispiele für die Verwendung von Lambda-Ausdrücken gesehen. Die Lambda-Ausdrücke von Python können keine Anweisungen enthalten, da das Syntax-Framework von Python keine in Ausdrücken verschachtelten Anweisungen verarbeiten kann.
In Python sind Funktionen bereits erstklassige Objekte und können im lokalen Bereich deklariert werden. Der einzige Vorteil der Verwendung eines Lambda anstelle der lokalen Definition der Funktion besteht also darin, dass Sie der Funktion keinen Namen geben müssen, also eine anonyme Funktion, sondern es ist lediglich eine lokale Variable, die dem Funktionsobjekt zugewiesen wird!
Das obige ist der detaillierte Inhalt vonWarum können Pythons Lambda-Ausdrücke keine Anweisungen enthalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!