Python-Lambda-Funktionen mit praktischen Beispielen

Veröffentlicht: 2021-06-21

Python-Lambda-Funktionen sind solche Funktionen, die klein sind und ohne Namen definiert werden. In Python wird das Schlüsselwort „def“ verwendet, um eine Funktion zu definieren. Bei anonymen Funktionen wird jedoch das Schlüsselwort „Lambda“ verwendet, um diese Funktionen zu definieren. Daher der Name „Lambda-Funktionen. Den Funktionen kann ein Name zugeordnet oder nicht zugeordnet sein.

Im Vergleich zu den regulären Funktionen in Python sind die Lambda-Funktionen kurz.

Lambda-Funktionen wurden der Syntax von Programmiersprachen wie Python, Java, C++, C# usw. hinzugefügt, die in ihrer Syntax enthalten sind. Während es als Kernkonzept in Sprachen von ML oder LISP verwendet wird.

Der Artikel konzentriert sich auf das Konzept von Python-Lambda- Funktionen und deren Verwendung.

Basierend auf der Art der Programmiersprache können die Lambda-Funktionen austauschbar mit den folgenden Begriffen verwendet werden:

  • Anonyme Funktionen
  • Lambda-Funktionen
  • Lambda-Ausdrücke
  • Lambda-Abstraktionen
  • Lambda-Form
  • Funktionsliterale

Inhaltsverzeichnis

Lambda-Kalkül

Die Lambda-Berechnung ist ein Berechnungsmodell, auf dessen Grundlage die Lambda-Ausdrücke aufgebaut sind. Die Lambda-Kalküle basieren auf reiner Abstraktion und wurden von Alonzo Church formalisiert. Auch als Lambda-Abstraktionen bekannt, bezieht es sich auf das ursprüngliche Modell, das von Alonzo Church erstellt wurde.

Jede Berechnung kann durch dieses Konzept codiert werden.

Syntax der Lambda-Funktion:

Die folgende Syntax wird bei der Verwendung der Lambda-Funktionen in Python verwendet.

Lambda-Argumente: Ausdruck

Es kann eine beliebige Anzahl von Argumenten in der Lambda-Funktion in Python geben . Aber die Funktionen können nur einen Ausdruck haben. Dieser Ausdruck wird zuerst ausgewertet und dann zurückgegeben. Die Verwendung von Lambda-Funktionen liegt überall dort, wo eine Anforderung an die Funktionsobjekte besteht.

Betrachten Sie einen Fall, in dem eine anonyme Funktion mit zwei Argumenten mit Lambda definiert, aber nicht an eine Variable gebunden ist:

Lambda x, y: x + y

Hier werden die beiden Argumente von der Funktion übernommen und die Summe zurückgegeben.

Es gibt einige Eigenschaften, die von einer Lambda-Funktion gezeigt werden:

  • Der Hauptteil der Lambda-Funktion darf keine Anweisungen enthalten, sondern nur Ausdrücke enthalten.
  • Der Ausführungscode ist nur eine einzige Zeile.
  • Typanmerkungen werden von der Lambda-Funktion in Python nicht unterstützt .
  • Sofortiger Aufruf ist erlaubt.

Anweisungen können nicht verwendet werden

Wie bereits erwähnt, kann es beim Definieren von Lambda-Funktionen keine Anweisungen geben. Wenn der Benutzer Anweisungen wie Pass, Return, Raise oder Assert verwendet, tritt eine SyntaxError-Ausnahme auf. Das Ergebnis der Ausnahme kann durch den folgenden Code angezeigt werden

Quelle

Im obigen Code trat ein Syntaxfehler auf, als der Code analysiert wurde, der die Assert - Anweisung im Hauptteil der Funktion Lambda enthielt.

Lambda-Funktion enthält nur einen einzigen Ausdruck

Im Gegensatz zu allen normalen Standardfunktionen in Python kann eine Lambda-Funktion in Python nur einen einzigen Ausdruck enthalten. Der Körper der Lambda-Funktion kann den Ausdruck durch die Verwendung mehrerer Zeilen mit Klammern überall verteilen. Es bleibt jedoch immer noch ein einzelner Ausdruck.

Quelle

Der String „ungerade“ wird zurückgegeben, wenn es ein „ungerades“ Argument gibt, während der String „gerade“ zurückgegeben wird, wenn es ein „gerades“ Argument gibt. Im obigen Code werden zwei Zeilen verwendet, da sie sich in Klammern befinden. Aber es bleibt ein einzelner Ausdruck.

Geben Sie Anmerkungen ein

Mit der Verfügbarkeit von „Type Hinting“ in Python werden die normalen Funktionen jetzt den Lambda-Funktionen in Python vorgezogen. Mit der Verfügbarkeit von Tools wie mypy, pyre usw. können Typfehler mit full_name() abgefangen werden. Der der Lambda-Funktion zugeordnete Syntaxfehler wird während der Laufzeit ausgelöst.

Sofort aufgerufene Funktionsausführung (IIFE)

Die Funktion kann nicht außerhalb eines Python-Interpreters verwendet werden. Die Definition des Lambda-Ausdrucks in Python kann an Funktionen höherer Ordnung wie map() usw. übergeben werden.

Argumente in einer Lambda-Funktion

In Python-Lambda- Ausdrücken werden verschiedene Möglichkeiten für die Übergabe der Argumente unterstützt, wie zum Beispiel:

  • Positionale Argumente
  • Benannte Argumente werden auch als Schlüsselwortargumente bezeichnet
  • Variable Liste von Argumenten, die auch als Varargs bezeichnet wird.
  • Variable Liste von Schlüsselwortargumenten
  • Argumente nur mit Schlüsselwörtern.

Dekorateure in einem Python-Lambda-Ausdruck

Der Decorator kann als Musterimplementierung definiert werden, die das Hinzufügen eines Verhaltens zu einer Klasse oder Funktion ermöglicht. Die Syntax von @decorator wird als Präfix für eine Funktion zum Ausdrücken eines Dekorators in Python verwendet

Nur mit dem Argument 'Python' wird die dekorierte_Funktion() ausgegeben. Das zusätzliche Verhalten, das gedruckt wird, ist 'Calling function 'decorated_function'.

Python erlaubt das Hinzufügen eines Dekorators zu einer Lambda-Funktion, obwohl die Verwendung der Syntax @decorator nicht erforderlich ist. Der Decorator fungiert als Funktion, die die Lambda-Funktion aufruft.

<lambda> erscheint dort, wo die Lambda-Funktion identifiziert wird. Im Fall einer normalen Funktion, dh add_two, wird sie jedoch eindeutig identifiziert.

Zu Debugging-Zwecken können die Lambda-Funktionen auf diese Weise dekoriert werden.

Schließung

Closure() in Python ist als eine Funktion definiert, bei der freie Variablen mit Ausnahme von Parametern, die in der Funktion verwendet werden, an bestimmte Werte gebunden sind, die im Bereich der Funktion definiert sind. Wir können die Schließungen von überall anrufen. Lambda-Funktionen in Python können als Closures fungieren, so wie die normalen Funktionen als Closure fungieren.

Verwendung von Lambda-Funktionen

  • Wann immer wir eine Funktion für eine kürzere Zeit verwenden müssen, werden die Lambda-Funktionen in diesem Fall verwendet.
  • Zur Übergabe von Funktionen an eine Funktion einer Funktion höherer Ordnung werden Lambda-Funktionen angewendet. Die Funktionen werden als Argumente an diese Funktionen höherer Ordnung übergeben.
  • Die Lambda-Funktionen in Python können mit anderen eingebauten Funktionen wie map() usw. verwendet werden.

Testen von Lambda-Funktionen

Durch die Verwendung der Module doctest und unittest können die Lambda-Funktionen in Python getestet werden:

  • Unittest-Module testen die Lambda-Funktionen wie die regulären Funktionen.
  • Im Fall des doctest-Moduls wird der Python-Code für die Ausführung des Tests aus docstring extrahiert. Die Syntax der Lambda-Funktion lässt den docstring nicht zu . Dem _doc_-Element des benannten Lambda kann jedoch eine Zeichenfolge zugewiesen werden.

Beispiele für Python-Lambda-Funktionen

Im folgenden Code wird eine Funktion mit dem Namen „identity“ definiert, bei der ein Argument zurückgegeben wird. Sie wird durch die Verwendung des Schlüsselworts „def“ als Standardfunktion von Python definiert.

>>> def Identität (x);

….. gib x zurück

Hier wird x von der Funktion „identity“ als Argument genommen und gibt beim Aufruf das Argument zurück.

Das Schreiben des gleichen Codes mit Lambda lautet:

Lambda x: x

Der Ausdruck besteht aus drei Teilen: Lambda als Schlüsselwort, x, das dann eine gebundene Variable ist, und X, das der Hauptteil des Codes ist.

  • Gebundene Variable bezieht sich auf das Argument, das an eine Lambda-Funktion übergeben wird. Freie Variablen sind jedoch solche, die nicht gebunden sind und auf die im Ausdruckshauptteil verwiesen werden kann. Eine Konstante kann eine freie Variable oder Variablen sein, die im Gültigkeitsbereich der Funktion definiert sind.

Der obige Ausdruck kann wie folgt ausgearbeitet werden

>>> lambda x: x + 1

Hier fügt die Funktion 1 zum Argument hinzu. Die Funktion kann einem Argument hinzugefügt werden, während sowohl die Funktion als auch das Argument durch die Verwendung von Klammern eingeschlossen werden.

>>>(lambda x: x + 1)(2)

3

Zur Berechnung des Werts in einem Ausdruck wird eine Reduktionsstrategie angewendet. Wie im obigen Beispiel kann die gebundene Variable „x“ durch Argument 2 ersetzt werden.

(Lambda x: x + 1 )(2) = Lambda 2: 2 + 1

= 2 + 1

= 3

Da die Lambda-Funktion ein Ausdruck ist, kann eine Benennung vorgenommen und der obige Code neu geschrieben werden als

>>> add_one = Lambda x : x + 1

>>> add_one(2)

3

Das ist gleichbedeutend mit dem Schreiben:

def add_one(x):

gib x + 1 zurück

Die Lambda-Funktionen nehmen ein einzelnes Argument entgegen. Außerdem gibt es beim Definieren der Lambda-Funktion in Python keine Klammern um die Funktionen.

Um mehr als ein Argument an eine Python-Lambda- Funktion zu übergeben, werden die Argumente aufgelistet und durch die Verwendung eines Kommas (,) getrennt. Beim Auflisten der Argumente dürfen keine Klammern stehen. Ein Beispiel für Funktionen mit mehreren Argumenten ist unten dargestellt:

Hier werden zwei Argumente von der Lambda-Funktion unter full_name übernommen. Eine Zeichenfolge wird von der Funktion zurückgegeben, die den ersten und den letzten Parameter interpoliert. Der Code zeigt, dass beim Definieren der Lambda-Funktionen keine Klammern verwendet wurden. Der Aufruf der Lambda-Funktion erfolgt auf die gleiche Weise wie der einer Standardfunktion in Python, dh unter Verwendung von Klammern, die die Argumente umgeben.

Python-Lambda-Funktionen mit filter()

In Python akzeptiert die Funktion filter() ein Argument als Liste und als Funktion. Über die Elemente der Liste kann die Funktion aufgerufen werden, die eine neue Liste von Elementen zurückgibt. Die Funktion für diese neu erstellte Liste wird mit True ausgewertet .

Unten sehen Sie ein Beispiel für eine filter()- Funktion, die zum Filtern gerader Zahlen in einer Liste verwendet wird.

Quelle

Die vom Programm generierte Ausgabe ist die neue Liste: [4, 6, 8, 12].

Python-Lambda-Funktion mit map()

Eine Liste und eine Funktion werden als Argument in der Python-Funktion map() verwendet. Alle in der Liste enthaltenen Elemente rufen die Funktion auf, die eine neu erstellte Liste mit Elementen zurückgibt, die von der Funktion zurückgegeben werden.

Fazit

Python-Lambda-Funktionen sind Funktionen, die einzeilig sind und ohne Namen deklariert werden, dh anonyme Funktionen. An eine Lambda-Funktion, die nur einen Ausdruck haben kann, können mehrere Argumente übergeben werden. Manchmal kann die Lambda-Funktion als Argument an andere Funktionen übergeben werden. Die Funktion, wenn sie mit dem Schlüsselwort „def“ in Python definiert wird, kann sich wie eine reguläre Funktion verhalten.

Der Artikel erläuterte daher die Konzepte von Lambda-Funktionen in Python, ihre Anwendung mit anderen Funktionen und auch einige Beispiele. Wenn Sie darüber hinaus daran interessiert sind, Fachwissen über die Programmiersprache zu erwerben und Ihre Programmierkenntnisse zu beherrschen, können Sie den von upGrad angebotenen Kurs „ Executive PG Program in Data Science “ besuchen. Es ist speziell für alle Berufseinsteiger im Alter von 21 bis 45 Jahren konzipiert, die ihre Programmierkenntnisse in Data Science verbessern möchten. Wenn Sie bereit sind, Ihren Träumen einen Schritt näher zu kommen, kommen Sie nach vorne und sehen Sie sich die Vorteile des Kurses an. Mit praxisnahen Industrieprojekten ist der vom IIIT-B angebotene Kurs darauf ausgelegt, Ihre Bedürfnisse zu erfüllen und Sie auf die kommenden Top-Branchen vorzubereiten.

Was ist der Unterschied zwischen einer normalen Funktion und einer Lambda-Funktion?

Wir wissen, dass eine Funktion in Python mit dem Schlüsselwort def definiert wird. Auf ähnliche Weise wird eine Lambda-Funktion mit dem Schlüsselwort lambda definiert. Betrachten Sie das folgende Beispiel, um den Unterschied zwischen den beiden zu verstehen:
# Normale Funktion def sq(x): return x*x # Lambda-Funktion lambda_sq = lambda x: x*x # Aufruf der normalerweise # definierten Funktion print(sq(10)) # Verwendung der Lambda-Funktion print(lambda_sq(10)) }
Das obige Beispiel veranschaulicht 2 Funktionen, die das Quadrat einer Zahl berechnen. Ohne Lambda müssen wir eine Funktion sq(x) erstellen und dann das Quadrat zurückgeben. Andererseits hat sich bei Lambda die gesamte Funktion auf eine einzige Zeile gekocht. Lambda erfordert keine return-Anweisung.