Heim >Backend-Entwicklung >Python-Tutorial >Ein Leitfaden für Python Lambda -Funktionen mit Beispielen

Ein Leitfaden für Python Lambda -Funktionen mit Beispielen

Joseph Gordon-Levitt
Joseph Gordon-LevittOriginal
2025-02-18 10:02:12168Durchsuche

Ein Leitfaden für Python Lambda -Funktionen mit Beispielen

Dieser Artikel führt Python Lambda -Funktionen vor und wie schreiben und verwenden.

Obwohl Python eine objektorientierte Programmiersprache ist, sind Lambda-Funktionen nützlich, wenn Sie verschiedene Arten von funktionaler Programmierung durchführen.

Hinweis: In diesem Artikel wird davon ausgegangen, dass Sie die Python -Programmierung bereits verstehen und wie eine reguläre Funktion verwendet wird. Es wird auch angenommen, dass Sie Python 3.8 oder höher auf Ihrem Gerät installiert haben.

Key Takeaways

  • Python-Lambda-Funktionen sind anonym, normalerweise ein Zeilenfunktionen, das mit dem Schlüsselwort "Lambda" definiert ist und häufig in Funktionen höherer Ordnung wie MAP () und Filter () verwendet wird. Sie können das Listenverständnis bewältigen und sind nützlich für das bedingte Rendering in UI -Frameworks.
  • Lambda -Funktionen können eine beliebige Anzahl von Positionsargumenten, Keyword -Argumenten oder beides erfolgen, gefolgt von einem Dickdarm und nur einem Ausdruck. Sie werden auch wie sofort aufgerufene Funktionsausdrücke (IIFes) in JavaScript ausgeführt.
  • Lambda -Funktionen können im Listenverständnis und beim Schreiben von ternären Ausdrücken in Python verwendet werden, die ein Ergebnis basierend auf einer bestimmten Bedingung ausgeben. Sie können auch in Funktionen höherer Ordnung verwendet werden, die Funktionen sind, die andere Funktionen als Argumente und Rückgabefunktionen als Ausgabe akzeptieren.
  • Obwohl Python Lambdas die Anzahl der Codezeilen erheblich reduzieren kann, sollten sie sparsam und nur bei Bedarf verwendet werden. Die Lesbarkeit des Codes sollte vorsichtig sein. Sie werden nicht für die Verwendung empfohlen, wenn mehrere Ausdrücke vorhanden sind, da er den Code nicht lesbar machen kann.

Erklären von Python Lambda -Funktionen

In Python können Funktionen eine oder mehrere Positions- oder Schlüsselwortargumente, eine variable Liste von Argumenten, eine variable Liste von Keyword -Argumenten usw. aufnehmen. Sie können in eine Funktion höherer Ordnung übergeben und als Ausgabe zurückgegeben werden. Regelmäßige Funktionen können mehrere Ausdrücke und mehrere Aussagen haben. Sie haben auch immer einen Namen.

Eine Python -Lambda -Funktion ist einfach eine anonyme Funktion. Es könnte auch als namenlose -Funktion bezeichnet werden. Normale Python -Funktionen werden durch das Def -Schlüsselwort definiert. Lambda -Funktionen in Python bestehen normalerweise aus dem Lambda -Schlüsselwort, einer beliebigen Anzahl von Argumenten und einem Ausdruck.

Hinweis: Die Begriffe Lambda -Funktionen, Lambda -Ausdrücke und Lambda -Formulare können je nach Programmiersprache oder Programmierer austauschbar verwendet werden.

Lambda-Funktionen werden hauptsächlich als Einzeiler verwendet. Sie werden sehr oft in Funktionen höherer Ordnung wie MAP () und Filter () verwendet. Dies liegt daran, dass anonyme Funktionen als Argumente an Funktionen höherer Ordnung übergeben werden, was nicht nur in der Python-Programmierung erfolgt.

Eine Lambda -Funktion ist auch sehr nützlich für das Verständnis der Liste in Python - mit verschiedenen Optionen für die Verwendung von Python Lambda -Ausdrücken für diesen Zweck.

lambdas eignen sich hervorragend bei der bedingten Rendierung in UI -Frameworks wie Tkinter, WXPython, Kivy usw. Obwohl die Funktionsweise von Python -GUI -Frameworks in diesem Artikel nicht behandelt werden, zeigen einige Code -Snippets eine starke Verwendung von Lambda -Funktionen, um UI zu rendern Basierend auf der Interaktion eines Benutzers.

Dinge zu verstehen, bevor Sie sich in Python Lambda -Funktionen befassen

Da Python eine objektorientierte Programmiersprache ist, ist alles ein Objekt. Python -Klassen, Klasseninstanzen, Module und Funktionen werden als Objekte behandelt.

Ein Funktionsobjekt kann einer Variablen zugewiesen werden.

Es ist nicht ungewöhnlich, reguläre Funktionen in Python Variablen zuzuweisen. Dieses Verhalten kann auch auf Lambda -Funktionen angewendet werden. Dies liegt daran, dass es sich um Funktionsobjekte handelt, obwohl sie namenlos sind:

<span>def greet(name):
</span>    <span>return <span>f'Hello <span>{name}</span>'</span>
</span>
greetings <span>= greet
</span>greetings<span>('Clint')
</span><span>>>>>
</span>Hello Clint

Funktionen höherer Ordnung wie MAP (), filter () und reduz ()

Es ist wahrscheinlich, dass Sie eine Lambda-Funktion in eingebauten Funktionen wie Filter () und MAP () und auch mit record () verwenden müssen-das aus dem Functools-Modul in Python importiert wird, da es nicht ein ist integrierte Funktion. Standardmäßig sind Funktionen höherer Ordnung Funktionen, die andere Funktionen als Argumente erhalten.

Wie in den folgenden Code-Beispielen zu sehen, können die normalen Funktionen durch Lambdas ersetzt werden, die als Argumente in eine dieser Funktionen höherer Ordnung übergeben werden:

<span>#map function
</span>names <span>= ['Clint', 'Lisa', 'Asake', 'Ada']
</span>
greet_all <span>= list(map(greet, names))
</span><span>print(greet_all)
</span><span>>>>>
</span><span>['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']</span>
<span>#filter function
</span>numbers <span>= [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
</span><span>def multiples_of_three(x):
</span>        <span>return x % 3 == 0
</span>
<span>print(list(filter(multiples_of_three, numbers)))
</span><span>>>>>
</span><span>[12, 15, 18]</span>
<span>#reduce function
</span>numbers <span>= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
</span><span>def add_numbers(x, y):
</span>        <span>return x * y
</span>
<span>print(reduce(add_numbers, numbers))
</span><span>>>>>
</span><span>55</span>

Der Unterschied zwischen einer Aussage und einem Ausdruck

Ein häufiger Verwirrungspunkt bei Entwicklern besteht darin, zwischen einer Aussage und einem Ausdruck in der Programmierung zu unterscheiden.

Eine Anweisung ist ein Code, der etwas tut oder eine Aktion ausführt - wie z. B. wenn oder während der Bedingungen.

Ein Ausdruck besteht aus einer Kombination von Variablen, Werten und Operatoren und bewertet einen neuen Wert.

Diese Unterscheidung ist wichtig, da wir das Thema Lambda -Funktionen in Python untersuchen. Ein Ausdruck wie der folgende gibt einen Wert zurück:

square_of_three <span>= 3 ** 2
</span><span>print(square_of_three)
</span><span>>>>>
</span><span>9</span>

Eine Aussage sieht so aus:

<span>for i in range(len(numbers), 0, -1):
</span>        <span>if i % 2 == 1:
</span>                <span>print(i)
</span>        <span>else:
</span>                <span>print('even')
</span><span>>>>>
</span>even <span>9 even 7 even 5 even 3 even 1</span>

So verwenden Sie Python Lambda -Funktionen

Die Python -Style -Führung sieht vor, dass jede Lambda -Funktion mit dem Schlüsselwort Lambda beginnen muss (im Gegensatz zu normalen Funktionen, die mit dem Def -Schlüsselwort beginnen). Die Syntax für eine Lambda -Funktion ist im Allgemeinen wie folgt:

<span>lambda arguments : expression</span>

Lambda -Funktionen können eine beliebige Anzahl von Positionsargumenten, Keyword -Argumenten oder beides erfolgen, gefolgt von einem Dickdarm und nur einem Ausdruck. Es kann nicht mehr als einen Ausdruck geben, da er syntaktisch eingeschränkt ist. Untersuchen wir unten ein Beispiel für einen Lambda -Ausdruck:

add_number <span>= lambda x, y : x + y
</span><span>print(add_number(10, 4))
</span><span>>>>>
</span><span>14</span>

Aus dem obigen Beispiel wird der Lambda -Ausdruck der Variablen add_number zugeordnet. Ein Funktionsaufruf erfolgt durch Übergeben von Argumenten, die auf 14 bewertet werden.

Nehmen wir unten ein weiteres Beispiel:

<span>def greet(name):
</span>    <span>return <span>f'Hello <span>{name}</span>'</span>
</span>
greetings <span>= greet
</span>greetings<span>('Clint')
</span><span>>>>>
</span>Hello Clint

Wie oben zu sehen, bewertet die Lambda -Funktion auf 728.0. Eine Kombination aus Positions- und Schlüsselwortargumenten wird in der Python Lambda -Funktion verwendet. Bei Verwendung von Positionsargumenten können wir die in der Funktionsdefinition beschriebene Reihenfolge nicht ändern. Wir können jedoch nur nach den Positionsargumenten Keyword -Argumente an jeder Position platzieren.

Lambda -Funktionen werden immer genauso ausgeführt, wie es in JavaScript sofort auf Funktionsausdrücke (IIFes) aufgerufen wird. Dies wird hauptsächlich mit einem Python -Dolmetscher verwendet, wie im folgenden Beispiel gezeigt:

<span>#map function
</span>names <span>= ['Clint', 'Lisa', 'Asake', 'Ada']
</span>
greet_all <span>= list(map(greet, names))
</span><span>print(greet_all)
</span><span>>>>>
</span><span>['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']</span>

Das Lambda -Funktionsobjekt ist in Klammern verpackt, und ein weiteres Paar von Klammern folgt eng mit den bestandenen Argumenten. Als IIfe wird der Ausdruck bewertet und die Funktion gibt einen Wert zurück, der der Variablen zugeordnet ist.

Python Lambda -Funktionen können auch innerhalb eines Listenverständnisses ausgeführt werden. Ein Listenverständnis hat immer einen Ausgangsausdruck, der durch eine Lambda -Funktion ersetzt wird. Hier sind einige Beispiele:

<span>#filter function
</span>numbers <span>= [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
</span><span>def multiples_of_three(x):
</span>        <span>return x % 3 == 0
</span>
<span>print(list(filter(multiples_of_three, numbers)))
</span><span>>>>>
</span><span>[12, 15, 18]</span>
<span>#reduce function
</span>numbers <span>= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
</span><span>def add_numbers(x, y):
</span>        <span>return x * y
</span>
<span>print(reduce(add_numbers, numbers))
</span><span>>>>>
</span><span>55</span>

Lambda -Funktionen können beim Schreiben ternärer Ausdrücke in Python verwendet werden. Ein ternärer Expression gibt ein Ergebnis aus, das auf einer bestimmten Bedingung basiert. Schauen Sie sich die folgenden Beispiele an:

square_of_three <span>= 3 ** 2
</span><span>print(square_of_three)
</span><span>>>>>
</span><span>9</span>
<span>for i in range(len(numbers), 0, -1):
</span>        <span>if i % 2 == 1:
</span>                <span>print(i)
</span>        <span>else:
</span>                <span>print('even')
</span><span>>>>>
</span>even <span>9 even 7 even 5 even 3 even 1</span>

Lambda-Funktionen in Funktionen höherer Ordnung

Das Konzept der Funktionen höherer Ordnung ist in Python beliebt, genau wie in anderen Sprachen. Sie sind Funktionen, die andere Funktionen als Argumente akzeptieren und auch Funktionen als Ausgabe zurückgeben.

In Python nimmt eine Funktion höherer Ordnung zwei Argumente: eine Funktion und eine iterable. Das Funktionsargument wird auf jedes Element im iterablen Objekt angewendet. Da wir eine Funktion als Argument an eine Funktion höherer Ordnung übergeben können, können wir gleichermaßen eine Lambda-Funktion übergeben.

Hier sind einige Beispiele für eine Lambda -Funktion, die mit der Map () -Funktion verwendet wird:
<span>lambda arguments : expression</span>
add_number <span>= lambda x, y : x + y
</span><span>print(add_number(10, 4))
</span><span>>>>>
</span><span>14</span>

Hier sind einige Lambda -Funktionen, die mit der Funktion filter () verwendet werden:
discounted_price <span>= lambda price, discount = 0.1, vat = 0.02 : price * (1 - discount) * (1 + vat)
</span>
<span>print(discounted_price(1000, vat=0.04, discount=0.3))
</span><span>>>>>
</span><span>728.0</span>
<span>print((lambda x, y: x - y)(45, 18))
</span><span>>>>>
</span><span>27</span>

Hier sind einige Lambda -Funktionen, die mit der Funktion recry () verwendet werden:
my_list <span>= [(lambda x: x * 2)(x) for x in range(10) if x % 2 == 0]
</span><span>print(my_list)
</span><span>>>>>
</span><span>[0, 4, 8, 12, 16]</span>
value <span>= [(lambda x: x % 2 and 'odd' or 'even')(x) for x in my_list] 
</span><span>print(value)
</span><span>>>>>
</span><span>['even', 'even', 'even', 'even', 'even']</span>

Schlussfolgerung

Obwohl Python Lambdas die Anzahl der von Ihnen geschriebenen Codezeilen erheblich reduzieren kann, sollten sie sparsam und nur bei Bedarf verwendet werden. Die Lesbarkeit Ihres Codes sollte vorsichtig sein. Für mehr lesbare Code verwenden Sie immer eine normale Funktion, die für Lambda -Funktionen geeignet ist, wie vom Python Style Guide empfohlen.

lambdas können mit Python -ternären Ausdrücken sehr praktisch sein, aber auch erneut versuchen Sie, die Lesbarkeit nicht zu opfern. Lambda-Funktionen kommen wirklich in die eigene Weise, wenn Funktionen höherer Ordnung verwendet werden.

Zusammenfassend:
  • python lambdas eignen sich gut zum Schreiben von Ein-Liner-Funktionen.
  • Sie werden auch für IIFes verwendet (sofort auf den Funktionsausdruck).
  • lambdas sollte nicht verwendet werden, wenn es mehrere Ausdrücke gibt, da der Code unlesbar ist.
  • Python ist eine objektorientierte Programmiersprache, aber Lambdas ist eine gute Möglichkeit, die funktionale Programmierung in Python zu untersuchen.

verwandte Inhalt:

  • Python -Dekoratoren verstehen, mit Beispielen
  • Kurs: Programmierfundamentaldaten mit Python
  • lernen
  • Trends in Python: Was ist in der heißesten Sprache heute
  • heiß
  • 5 Häufige Probleme, mit denen Python Anfänger ausgesetzt sind
  • Wie vier Programmierer ihre ersten Python -Jobs bekommen

FAQs über Python Lambdas

Was ist eine Lambda -Funktion in Python?

In Python ist eine Lambda -Funktion eine anonyme, kleine und Inline -Funktion, die mit dem Lambda -Schlüsselwort definiert ist. Es wird häufig für kurzfristige Operationen verwendet, bei denen eine vollständige Funktionsdefinition unnötig ist.

Wie definiere ich eine Lambda-Funktion?

Die Syntax für eine Lambda -Funktion ist: Lambda -Argumente: Ausdruck. Zum Beispiel: Lambda X: x 1 erstellt eine Lambda -Funktion, die seinem Argument 1 hinzufügt.

Lambda-Funktionen sind anonym und werden normalerweise für kurze einmalige Operationen verwendet. Regelmäßige Funktionen werden mit dem DEF -Schlüsselwort definiert und können mehrere Ausdrücke und Anweisungen haben.

Wann sollte ich eine Lambda -Funktion verwenden?

Lambda -Funktionen sind für kurze, einfache Operationen geeignet, insbesondere wenn Sie für einen kurzen Zeitraum eine Funktion benötigen und sie nicht mit Def. Funktionen?

lambda -Funktionen sind insofern begrenzt, als sie nur einen einzelnen Ausdruck enthalten können. Sie können Aussagen oder Multiline -Code nicht enthalten.

Kann ich Lambda -Funktionen für komplexe Operationen verwenden?

Während Lambda -Funktionen für den Einfachheit halber ausgelegt sind, können sie komplexe Operationen innerhalb der Einschränkungen eines einzelnen Ausdrucks ausführen. Für eine erweitertere und komplexere Logik ist es jedoch oft besser, eine reguläre Funktion zu verwenden.

Das obige ist der detaillierte Inhalt vonEin Leitfaden für Python Lambda -Funktionen mit Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn