Funktionale Programmierung in Python: Ein tiefer Tauchgang
James Reed
Infrastructure Engineer · Leapcell

Überblick über die funktionale Programmierung
Funktionale Programmierung bezieht sich auf einen Stil, bei dem jeder Teil des Codes unveränderlich ist und aus reinen Funktionen besteht. Eine reine Funktion ist eine Funktion, die unabhängig von anderen ist und bei gleicher Eingabe immer die gleiche Ausgabe erzeugt.
Darüber hinaus hat die funktionale Programmierung die Eigenschaft, dass eine Funktion als Argument an eine andere Funktion übergeben und auch eine Funktion zurückgegeben werden kann.
Beispiele für reine Funktionen
Um beispielsweise die Werte von Elementen in einer Liste zu verdoppeln, kann die folgende Funktion verwendet werden:
def multiply_2(list): for index in range(0, len(list)): list[index] *= 2 return list
Es ist zu beachten, dass dieser Code nicht in Form einer reinen Funktion vorliegt, da die Werte der Elemente in der Liste geändert werden. Wenn die Funktion multiply_2()
mehrmals aufgerufen wird, sind die Ergebnisse jedes Mal anders.
Um multiply_2()
zu einer reinen Funktion zu machen, muss eine neue Liste erstellt und zurückgegeben werden, wie folgt:
def multiply_2_pure(list): new_list = [] for item in list: new_list.append(item * 2) return new_list
Vorteile und Nachteile der funktionalen Programmierung
Die Vorteile der funktionalen Programmierung liegen hauptsächlich darin, dass die reinen Funktionen und die Unveränderlichkeit das Programm robuster und einfacher zu debuggen und zu testen machen. Die Nachteile bestehen hauptsächlich darin, dass es viele Einschränkungen gibt und es schwierig ist, zu schreiben.
Beachten Sie, dass es in rein funktionalen Programmiersprachen (wie Scala) keine Variablen in den geschriebenen Funktionen gibt, sodass garantiert werden kann, dass die Ausgabe immer dann bestimmt ist, wenn die Eingabe bestimmt ist. In Programmiersprachen, die die Verwendung von Variablen zulassen, kann die gleiche Eingabe aufgrund des unsicheren Zustands von Variablen innerhalb der Funktion zu unterschiedlichen Ausgaben führen.
Python erlaubt die Verwendung von Variablen, daher ist es keine rein funktionale Programmiersprache. Python bietet nur teilweise Unterstützung für die funktionale Programmierung, hauptsächlich einschließlich der drei Funktionen map()
, filter()
und reduce()
, die normalerweise zusammen mit anonymen lambda
-Funktionen verwendet werden. Als Nächstes wird die Verwendung dieser drei Funktionen einzeln vorgestellt.
Funktions zur Unterstützung der funktionalen Programmierung in Python
Python-Funktion map()
Die grundlegende Syntax der Funktion map()
lautet wie folgt:
map(function, iterable)
Hier stellt der Parameter function
eine zu übergebende Funktion dar, die eine integrierte Funktion, eine benutzerdefinierte Funktion oder eine anonyme lambda
-Funktion sein kann. iterable
steht für ein oder mehrere iterierbare Objekte, z. B. Listen, Zeichenketten usw.
Die Funktion der Funktion map()
besteht darin, die angegebene Funktion für jedes Element im iterierbaren Objekt aufzurufen und ein map
-Objekt zurückzugeben.
Beachten Sie, dass die Funktion ein map
-Objekt zurückgibt, das nicht direkt ausgegeben werden kann. Es kann über eine for
-Schleife oder die Funktion list()
angezeigt werden.
[Beispiel 1] Multiplizieren Sie jedes Element in der Liste mit 2
listDemo = [1, 2, 3, 4, 5] new_list = map(lambda x: x * 2, listDemo) print(list(new_list))
Das Laufergebnis ist:
[2, 4, 6, 8, 10]
[Beispiel 2] Übergeben Sie mehrere iterierbare Objekte als Parameter an die Funktion map()
listDemo1 = [1, 2, 3, 4, 5] listDemo2 = [3, 4, 5, 6, 7] new_list = map(lambda x,y: x + y, listDemo1,listDemo2) print(list(new_list))
Das Laufergebnis ist:
[4, 6, 8, 10, 12]
Beachten Sie, dass die Funktion map()
direkt in C-Sprache geschrieben ist, sie muss während der Laufzeit nicht indirekt über den Python-Interpreter aufgerufen werden, und es wurden intern viele Optimierungen vorgenommen. Daher hat diese Methode im Vergleich zu anderen Methoden die höchste Laufeffizienz.
Python-Funktion filter()
Die grundlegende Syntax der Funktion filter()
lautet wie folgt:
filter(function, iterable)
In diesem Format stellt der Parameter funcition
eine zu übergebende Funktion dar und iterable
ein iterierbares Objekt.
Die Funktion der Funktion filter()
besteht darin, die Funktion function
zu verwenden, um jedes Element in iterable
zu beurteilen und True
oder False
zurückzugeben. Schließlich werden die Elemente, die True
zurückgeben, zu einer neuen durchlaufbaren Sammlung kombiniert.
[Beispiel 3] Geben Sie alle geraden Zahlen in einer Liste zurück
listDemo = [1, 2, 3, 4, 5] new_list = filter(lambda x: x % 2 == 0, listDemo) print(list(new_list))
Das Laufergebnis ist:
[2, 4]
[Beispiel 4] Die Funktion filter() akzeptiert mehrere iterierbare Objekte
listDemo = [1, 2, 3, 4, 5] new_list = map(lambda x,y: x-y>0,[3,5,6],[1,5,8] ) print(list(new_list))
Das Laufergebnis ist:
[True, False, False]
Python-Funktion reduce()
Die Funktion reduce()
wird normalerweise verwendet, um einige kumulative Operationen für eine Sammlung durchzuführen. Die Basissyntax lautet:
reduce(function, iterable)
Hier muss function
eine Funktion mit zwei Parametern sein und iterable
ein iterierbares Objekt darstellen.
Beachten Sie, dass die Funktion reduce()
in Python 3.x entfernt und im Modul functools
platziert wurde. Daher muss das Modul functools
importiert werden, bevor diese Funktion verwendet wird.
[Beispiel 5] Berechnen Sie das Produkt von Elementen in einer Liste
import functools listDemo = [1, 2, 3, 4, 5] product = functools.reduce(lambda x, y: x * y, listDemo) print(product)
Das Laufergebnis ist:
120
Zusammenfassung
Im Allgemeinen sollten bei der Durchführung einiger Operationen an Elementen in einer Sammlung, wenn die Operationen sehr einfach sind, wie z. B. Addition, Akkumulation usw., zuerst map()
, filter()
und reduce()
in Betracht gezogen werden. Darüber hinaus wird bei sehr großen Datenmengen (z. B. in Anwendungen für maschinelles Lernen) normalerweise die funktionale Programmierdarstellung aufgrund ihrer höheren Effizienz bevorzugt.
Wenn die Datenmenge nicht groß ist, können natürlich auch Methoden wie for
-Schleifen verwendet werden. Wenn jedoch komplexere Operationen an den Elementen in der Sammlung durchgeführt werden müssen, werden aus Gründen der Lesbarkeit des Codes normalerweise for
-Schleifen verwendet.
Leapcell: Die Serverlose Plattform der nächsten Generation für Webhosting, asynchrone Aufgaben und Redis
Zum Schluss empfehle ich die beste Plattform für die Bereitstellung von Python-Apps: Leapcell
1. Unterstützung mehrerer Sprachen
- Entwickeln Sie mit JavaScript, Python, Go oder Rust.
2. Stellen Sie unbegrenzt Projekte kostenlos bereit
- Zahlen Sie nur für die Nutzung – keine Anfragen, keine Gebühren.
3. Unschlagbare Kosteneffizienz
- Pay-as-you-go ohne Leerlaufgebühren.
- Beispiel: 25 US-Dollar unterstützen 6,94 Millionen Anfragen bei einer durchschnittlichen Antwortzeit von 60 ms.
4. Optimierte Entwicklererfahrung
- Intuitive Benutzeroberfläche für mühelose Einrichtung.
- Vollautomatische CI/CD-Pipelines und GitOps-Integration.
- Echtzeitmetriken und -protokollierung für umsetzbare Erkenntnisse.
5. Mühelose Skalierbarkeit und hohe Leistung
- Automatische Skalierung zur einfachen Bewältigung hoher Parallelität.
- Kein operativer Aufwand – konzentrieren Sie sich einfach auf den Aufbau.
Erfahren Sie mehr in der Dokumentation!
Leapcell Twitter: https://x.com/LeapcellHQ