Kurs
Du kannst eigene Python-Funktionen mit dem Schlüsselwort def, Funktionsheadern, Docstrings und Funktionskörpern schreiben. Es gibt jedoch eine schnellere Möglichkeit, Funktionen ad hoc zu schreiben: lambda-Funktionen, benannt nach dem Schlüsselwort lambda.
Manche Funktionsdefinitionen sind so einfach, dass sie sich in eine Lambda-Funktion umwandeln lassen. So sparst du Zeilen und hältst deinen Code schlank – besonders praktisch, wenn du große Programme schreibst und wartest.
lambda-Funktion
Hier schreiben wir unsere Funktion raise_to_power als Lambda-Funktion um. Nach dem Schlüsselwort lambda gibst du die Argumentnamen an, gefolgt von einem Doppelpunkt und dem Ausdruck, der den Rückgabewert der Funktion definiert.
raise_to_power = lambda x, y: x ** y
raise_to_power(2, 3)
8
Wie erwähnt, erlauben dir lambda-Funktionen, schnell und pragmatisch Funktionen zu schreiben. Sie sind nicht für jeden Fall ideal, aber in manchen Situationen äußerst nützlich – wie im folgenden Beispiel.
map() und lambda-Funktion
Die Funktion map nimmt zwei Argumente entgegen: eine Funktion und eine Sequenz (zum Beispiel eine Liste). Sie wendet die Funktion auf alle Elemente der Sequenz an. Wir können lambda-Funktionen direkt an map übergeben, ohne ihnen einen Namen zu geben – man spricht dann von anonymen Funktionen.
In diesem Beispiel verwenden wir map() mit einer lambda-Funktion, die alle Elemente der Liste quadriert, und speichern das Ergebnis in square_all.
nums = [48, 6, 9, 21, 1]
square_all = map(lambda num: num ** 2, nums)
print(square_all)
<map object at 0x103e065c0>
Das Ausdrucken von square_all zeigt, dass es sich um ein map-Objekt handelt. Um die Werte zu sehen, wandeln wir es mit list in eine Liste um und drucken das Ergebnis.
print(list(square_all))
[2304, 36, 81, 441, 1]
Interaktives Beispiel zum Schreiben einer lambda-Funktion
Die folgende Funktion echo_word nimmt zwei Parameter entgegen: einen String word1 und eine Ganzzahl echo. Sie gibt einen String zurück, der aus echo Wiederholungen von word1 besteht.
Du wirst diese einfache Funktion in eine Lambda-Funktion umwandeln.
def echo_word(word1, echo):
"""Concatenate echo copies of word1."""
words = word1 * echo
return words
Im folgenden Beispiel wirst du:
- Eine Lambda-Funktion
echo_wordmit den Variablenword1undechodefinieren. Repliziere, was die ursprüngliche Funktionsdefinition vonecho_word()oben macht. echo_word()mit dem String-Argument'hey'und dem Wert5in dieser Reihenfolge aufrufen. Weisen den Aufrufresultzu und gib anschließendresultaus.
# Define echo_word as a lambda function: echo_word
echo_word = (lambda word1, echo: word1 * echo)
# Call echo_word: result
result = echo_word('hey', 5)
# Print result
print(result)
Wenn wir den obigen Code ausführen, erhalten wir folgendes Ergebnis:
heyheyheyheyhey
Mehr über Lambda-Funktionen erfährst du in diesem Video aus unserem Kurs Python Data Science Toolbox (Part 1).
Dieser Inhalt stammt aus dem DataCamp-Kurs Python Data Science Toolbox (Part 1) von Hugo Bowne-Anderson.
Schau dir auch DataCamps Python Functions Tutorial an.