anonyme Funktio...LOGIN

anonyme Funktion

Haben Sie jemals darüber nachgedacht, eine kurze Callback-Funktion zu definieren, möchten aber nicht def verwenden, um eine so lange Funktion zu schreiben? Die Antwort ist ja.

Python verwendet Lambda, um anonyme Funktionen zu erstellen, das heißt, es verwendet nicht mehr die Standardform der Def-Anweisung zum Definieren einer Funktion.

Anonyme Funktionen weisen hauptsächlich die folgenden Merkmale auf:

Lambda ist nur ein Ausdruck und der Funktionskörper ist viel einfacher als def.

Der Körper von Lambda ist ein Ausdruck, kein Codeblock. In Lambda-Ausdrücken kann nur eine begrenzte Logik gekapselt werden.

Die Lambda-Funktion verfügt über einen eigenen Namensraum und kann nicht auf Parameter außerhalb ihrer eigenen Parameterliste oder im globalen Namensraum zugreifen.

Grundlegende Syntax

lambda [arg1 [,arg2,.....argn]]:expression

Beispiel:

# -*- coding: UTF-8 -*-
sum = lambda num1 , num2 : num1 + num2;
print( sum( 1 , 2 ) )

Ausgabeergebnis:

3

Hinweis:Obwohl der Lambda-Ausdruck dies zulässt um einfache Funktionen zu definieren, aber seine Verwendung ist begrenzt. Sie können nur einen einzelnen Ausdruck angeben, dessen Wert der endgültige Rückgabewert ist. Das heißt, es darf keine anderen Sprachfunktionen enthalten, einschließlich mehrerer Anweisungen, bedingter Ausdrücke, Iteration, Ausnahmebehandlung usw.

Bei anonymen Funktionen gibt es ein besonderes Problem, das Aufmerksamkeit erfordert. Ändern Sie beispielsweise das obige Beispiel:

# -*- coding: UTF-8 -*-
num2 = 100
sum1 = lambda num1 : num1 + num2 ;
num2 = 10000
sum2 = lambda num1 : num1 + num2 ;
print( sum1( 1 ) )
print( sum2( 1 ) )

Was ist Ihrer Meinung nach die Ausgabe? Die erste Ausgabe ist 101, die zweite ist 10001, das Ergebnis ist nicht, das Ausgabeergebnis ist wie folgt:

10001
10001

Dies liegt hauptsächlich daran, dass num2 im Lambda-Ausdruck eine freie Variable ist und der Wert an gebunden ist Laufzeit, anstatt beim Definieren zu binden, was sich von der Standardwertparameterdefinition der Funktion unterscheidet. Daher wird empfohlen, in dieser Situation die erste Lösung zu verwenden.

nächsten Abschnitt
KapitelKursunterlagen