4 min Lesezeit 25. Sept. 2026

Python funktionale Programmierung: Konzepte einfach erklärt

Was ist funktionale Programmierung in Python? Reine Funktionen, map & filter einfach erklärt – für den Einstieg in sauberen, klaren Code.

Marcel Schmidtpeter Von Marcel Schmidtpeter 25. Sept. 2026
Python funktionale Programmierung: Konzepte einfach erklärt

Stell dir vor, du sitzt im Programmier-Praktikum und deine Ausbilderin zeigt dir ihren Code: keine einzige `for`-Schleife, aber Zeilen wie `list(map(lambda x: x * 1.19, preise))`. Willkommen in der Welt der funktionalen Programmierung in Python - ein Konzept, das dir in der Berufsschule, im Studium und später in fast jedem Python-Projekt begegnet. Die gute Nachricht: Die Grundidee dahinter ist einfacher, als sie aussieht.

Was ist funktionale Programmierung in Python?

Funktionale Programmierung ist ein Programmierstil, bei dem du Programme aus Funktionen zusammensetzt - ähnlich wie du einen Satz aus Wörtern baust. Das klingt erstmal banal, denn Funktionen kennst du schon. Der Unterschied: In der funktionalen Programmierung sind Funktionen die wichtigsten Bausteine. Sie werden wie Werte behandelt, sollten berechenbar sein und Daten nicht heimlich verändern.

Python ist keine reine funktionale Sprache, sondern eine Multiparadigmen-Sprache - du kannst objektorientiert, prozedural oder funktional schreiben. Meist mischt man alles. Die offizielle Python-Dokumentation beschreibt diese Konzepte ausführlich, wenn du tiefer einsteigen willst.

Merke: Funktionale Programmierung in Python heißt nicht, keine Schleifen mehr zu schreiben. Es heißt, Funktionen als Werkzeuge zu nutzen, die Daten verarbeiten, ohne Überraschungen zu erzeugen.

Funktionen sind Werte: First-Class Functions

In Python sind Funktionen First-Class-Objekte - du kannst sie einer Variable zuweisen, als Argument weiterreichen und aus anderen Funktionen zurückgeben. Stell dir eine Funktion wie eine Speisekarte vor: Sie ist nicht nur etwas, das du bestellst, sondern etwas, das du auch weitergeben kannst.

python
def gruss(name):
    return f"Hallo, {name}!"


begruessung = gruss  # Funktion wird einer Variable zugewiesen
print(begruessung("Anna"))  # Ausgabe: Hallo, Anna!

Warum ist das wichtig? Weil du so kleine Hilfsfunktionen flexibel kombinieren kannst - zum Beispiel bei `sorted()` mit dem `key`-Argument. Das Konzept nutzen auch Decorators, die dir früher oder später begegnen werden.

Reine Funktionen: Vorhersehbar wie ein Taschenrechner

Eine reine Funktion (Pure Function) liefert bei gleichem Input immer den gleichen Output - und verändert nichts außerhalb von sich. Wie ein Taschenrechner: `2 + 3` ergibt immer `5`, egal wie oft du rechnest, und der Taschenrechner löscht dabei nicht heimlich deine Notizen.

python
# Nicht rein: Seiteneffekt - veraendert die urspruengliche Liste
def rabatte_hinzufuegen(preise):
    for i in range(len(preise)):
        preise[i] = preise[i] * 0.9
    return preise


# Rein: gibt eine neue Liste zurueck, laesst das Original unberuehrt
def rabatte_berechnen(preise):
    return [p * 0.9 for p in preise]

Ein Seiteneffekt ist jede Veränderung außerhalb der Funktion: Dateien schreiben, globale Variablen ändern, Ausgaben printen. Seiteneffekte sind nicht schlecht - ohne sie könnte dein Programm nichts Sinnvolles tun. Aber je weniger davon in deinen Rechenfunktionen stecken, desto einfacher kannst du den Code testen und Fehler finden.

Merke: Reine Funktionen sind leichter zu testen, weil du nur Input und Output prüfen musst - nicht den gesamten Zustand deines Programms.

Higher-Order Functions: Wie funktionieren map, filter und reduce?

Eine Higher-Order Function ist eine Funktion, die andere Funktionen als Argument bekommt oder zurückgibt. Die drei Klassiker in Python:

Funktion

Was sie macht

Analogie

`map(f, liste)`

Wendet `f` auf jedes Element an

Ein Stempel, der jedes Blatt bedruckt

`filter(f, liste)`

Behält nur Elemente, für die `f` wahr ist

Ein Sieb, das nur die Teile durchlässt, die du behalten willst

`reduce(f, liste)`

Reduziert alles auf einen Wert

Ein Schneeball, der alles aufrollt

python
from functools import reduce

preise = [19.99, 5.50, 120.00, 3.20]

inkl_mwst = list(map(lambda p: round(p * 1.19, 2), preise))
teure = list(filter(lambda p: p > 15, inkl_mwst))
gesamt = reduce(lambda a, b: a + b, teure, 0)

print(gesamt)  # Ausgabe: 166.59

Eine Lambda-Funktion ist eine kleine, anonyme Funktion ohne Namen - mehr dazu im Artikel zur Python Lambda Funktion. `reduce` wohnt im Modul `functools` und muss importiert werden - in Python 2 war es noch eingebaut, in Python 3 nicht mehr.

Merke: Auch `sorted(namen, key=len)` ist eine Higher-Order Function - sie nimmt eine Funktion (`len`) als Argument entgegen. Dir begegnen sie öfter, als du denkst.

Ehrlicher Hinweis: In der Praxis ersetzen List Comprehensions `map` und `filter` oft, weil sie lesbarer sind. `map` und `filter` zeigen dir aber das zugrunde liegende Konzept - und das brauchst du auch für Pandas, Spark oder LINQ in C#, falls du später mit solchen Bibliotheken arbeitest.

Praxisbeispiel: Noten auswerten ohne eine einzige Schleife

Hier ein komplettes Beispiel, wie du in einer Berufsschul-App Prüfungsergebnisse funktional auswertest:

python
from functools import reduce

noten = [
    {"name": "Anna", "punkte": 82},
    {"name": "Ben", "punkte": 45},
    {"name": "Cem", "punkte": 91},
    {"name": "Dana", "punkte": 58},
]


# 1. Reine Funktion: Note berechnen
def note_aus_punkten(punkte):
    if punkte >= 90:
        return 1
    if punkte >= 70:
        return 2
    if punkte >= 50:
        return 3
    return 4


# 2. Bestanden: alle mit mindestens 50 Punkten
bestanden = list(filter(lambda s: s["punkte"] >= 50, noten))

# 3. Alle Ergebnisse als Liste von Tupeln
ergebnisse = list(
    map(lambda s: (s["name"], note_aus_punkten(s["punkte"])), bestanden)
)

# 4. Durchschnittspunkte der Bestandenen
durchschnitt = reduce(lambda summe, s: summe + s["punkte"], bestanden, 0) / len(
    bestanden
)

print(ergebnisse)  # [('Anna', 2), ('Cem', 1), ('Dana', 3)]
print(round(durchschnitt, 1))  # 77.0

Jeder Schritt macht genau eine Sache, und die Original-Liste `noten` bleibt unverändert. Genau das ist der praktische Vorteil: Du kannst jeden Schritt einzeln testen und in beliebiger Reihenfolge kombinieren.

Häufige Fehler, die Anfänger machen

Funktionale Konzepte haben ihre Stolpersteine - diese drei begegnen Einsteigern am häufigsten:

1. Das map-Objekt vergessen. `map()` gibt keine Liste zurück, sondern ein Map-Objekt - einen Iterator, den du nur einmal durchlaufen kannst. Ohne `list()` gibt `print(map(...))` nur etwas wie `<map object at 0x...>` aus.

python
# Falsch
ergebnis = map(lambda x: x * 2, [1, 2, 3])
print(ergebnis)  # <map object at 0x7f...>

# Richtig
ergebnis = list(map(lambda x: x * 2, [1, 2, 3]))
print(ergebnis)  # [2, 4, 6]

2. Lambda-Funktionen überladen. Lambdas sind für Mini-Logik gedacht. Sobald du mehrere Zeilen brauchst oder der Lambda komplex wird, nimm eine normale `def`-Funktion mit sprechendem Namen - dein Ich in drei Monaten dankt dir. Auch der Python-Styleguide PEP 8 rät davon ab, Lambdas an Namen zuzuweisen.

3. Seiteneffekte in map/filter verstecken. Wenn deine Lambda-Funktion plötzlich Dateien schreibt oder Variablen verändert, zerstörst du den größten Vorteil des Stils: die Vorhersagbarkeit. Bleib bei reinen Berechnungen.

Übungstipp: Refactore deine alten Schleifen

Nimm dir ein eigenes Projekt oder eine alte Hausaufgabe und suche drei `for`-Schleifen, die eine Liste befüllen. Schreibe jede davon als List Comprehension und einmal mit `map` oder `filter`. Vergleiche danach: Welche Variante verstehst du schneller, wenn du den Code eine Woche nicht angefasst hast? Diese Übung trainiert genau das Gespür, das Prüfer und Ausbilder gerne sehen - und sie dauert nur 15 Minuten.

FAQ: Häufige Fragen zur funktionalen Programmierung in Python

Ist Python eine funktionale Programmiersprache?

Nein. Python ist eine Multiparadigmen-Sprache und unterstützt funktionale Konzepte wie First-Class Functions, `map`, `filter` und `reduce`, aber erzwingt sie nicht. Reine funktionale Sprachen sind z. B. Haskell oder Erlang.

Brauche ich funktionale Programmierung als Anfänger?

Für die Grundlagen nicht, aber sie begegnet dir schnell - bei `sorted(..., key=...)`, List Comprehensions, Decorators oder Bibliotheken wie Pandas. Die Kernideen solltest du früher verstehen als später.

Was ist der Unterschied zwischen map und List Comprehension?

Beide wandeln jedes Element um. `map` ist kompakter bei einer bestehenden Funktion, List Comprehensions sind flexibler und für die meisten Python-Entwickler lesbarer. Performance-Unterschiede sind in der Praxis meist vernachlässigbar.

Was sind reine Funktionen einfach erklärt?

Reine Funktionen liefern bei gleichem Input immer den gleichen Output und haben keine Seiteneffekte - sie verändern also keine Daten außerhalb ihrer selbst.

Passt funktionale Programmierung zur objektorientierten Programmierung?

Ja, beides kombinierst du ständig. Typisch: Klassen organisieren deine Daten und Struktur (OOP-Grundlagen hier), während funktionale Konzepte die Verarbeitung innerhalb der Methoden übernehmen.

Fazit

Funktionale Programmierung in Python bedeutet: Funktionen als Werte behandeln, reine Funktionen bevorzugen und Daten mit `map`, `filter` und `reduce` bzw. List Comprehensions verarbeiten, statt alles mit Schleifen und Mutationen zu lösen. Du musst nicht sofort jeden Code funktional schreiben - aber wenn du die Konzepte kennst, verstehst du fremden Code schneller und schreibst testbarere eigene Programme.

Wenn du bei Python-Themen wie diesem gerade für eine Prüfung lernst oder in deinem Studium hängst: Bei study-it.education findest du persönliche IT-Nachhilfe, die genau da ansetzt, wo du gerade stehst - egal ob Azubi, Student oder Quereinsteiger. Schau vorbei und mach aus „Das verstehe ich nicht" ein „Das kann ich."


Passende Nachhilfe

1:1-Hilfe zu diesem Thema?

Erstgespräch · 0 € · 30 min

Brauchst du jemand, der das mit dir durchgeht?

Statt nochmal lesen: 30 min mit einem Senior-Dev.

Kostenloses Erstgespräch buchen →
Über den Autor
Marcel Schmidtpeter
Marcel Schmidtpeter

Was ist funktionale Programmierung in Python? Reine Funktionen, map & filter einfach erklärt – für den Einstieg in sauberen, klaren Code.

marcel.schmidtpeter@study-it.education →
Weiterlesen

Mehr Lesestoff