Teil 10: Funktionen und Lambda-Ausdrücke

In Python sind Funktionen ein zentrales Werkzeug, um Code zu strukturieren, wiederzuverwenden und lesbar zu machen. Lambda-Ausdrücke sind eine spezielle Form von Funktionen, die besonders kurze, anonyme Funktionen ermöglichen. In Data Science helfen beide, Berechnungen effizient durchzuführen und Daten zu transformieren.


1. Was ist eine Funktion?

Eine Funktion ist ein Codeblock, der eine bestimmte Aufgabe erfüllt. Sie kann Parameter erhalten, Werte zurückgeben und beliebig oft aufgerufen werden.

def begruessung():
    print("Hallo, willkommen in Python!")
  • def leitet die Funktionsdefinition ein
  • Funktionsname: begruessung
  • Codeblock wird bei jedem Aufruf ausgeführt:
begruessung()
# Ausgabe: Hallo, willkommen in Python!

2. Funktionen mit Parametern

Funktionen können Eingaben erhalten, um flexibler zu arbeiten.

def begruessung(name):
    print(f"Hallo {name}, willkommen!")

begruessung("Anna")
begruessung("Ben")
  • Ausgabe: Hallo Anna, willkommen! Hallo Ben, willkommen!

3. Rückgabewerte mit return

Funktionen können Werte zurückgeben, die weiterverwendet werden:

def addiere(a, b):
    return a + b

ergebnis = addiere(5, 3)
print(ergebnis)  # 8
  • return beendet die Funktion und liefert den Wert zurück

Praxisbeispiel: Umsatzberechnung

def berechne_umsatz(preis, anzahl, rabatt=False):
    umsatz = preis * anzahl
    if rabatt:
        umsatz *= 0.9  # 10% Rabatt
    return umsatz

umsatz = berechne_umsatz(19.99, 5, rabatt=True)
print(f"Umsatz: {umsatz:.2f} €")  # 89.95 €

4. Standardwerte für Parameter

Man kann Standardwerte definieren, die verwendet werden, wenn kein Wert übergeben wird:

def begruessung(name="Gast"):
    print(f"Hallo {name}!")

begruessung()      # Hallo Gast!
begruessung("Anna")  # Hallo Anna!

**5. Variable Anzahl von Argumenten: *args und kwargs

  • *args – beliebig viele Positionsargumente
  • **kwargs – beliebig viele benannte Argumente
def summe(*zahlen):
    ergebnis = 0
    for zahl in zahlen:
        ergebnis += zahl
    return ergebnis

print(summe(1,2,3,4))  # 10
def info(**person):
    for key, value in person.items():
        print(f"{key}: {value}")

info(Name="Anna", Alter=28, Beruf="Data Scientist")
  • Ausgabe: Name: Anna Alter: 28 Beruf: Data Scientist

6. Lambda-Ausdrücke

Lambda-Funktionen sind kurze, anonyme Funktionen, die nur aus einer Zeile bestehen:

quadriere = lambda x: x**2
print(quadriere(5))  # 25
  • Keine def-Syntax notwendig
  • Praktisch für einfaches Mapping oder Filter

Praxisbeispiel mit map

zahlen = [1, 2, 3, 4]
quadrate = list(map(lambda x: x**2, zahlen))
print(quadrate)  # [1, 4, 9, 16]

7. Lambda mit filter

Filtert Werte nach einer Bedingung:

zahlen = [10, 15, 20, 25, 30]
gerade = list(filter(lambda x: x % 2 == 0, zahlen))
print(gerade)  # [10, 20, 30]
  • filter liefert nur die Werte, die True zurückgeben

8. Lambda mit reduce

reduce aus functools reduziert eine Liste auf einen Wert:

from functools import reduce

zahlen = [1,2,3,4,5]
summe = reduce(lambda x, y: x+y, zahlen)
print(summe)  # 15
  • Praktisch für kumulative Berechnungen

9. Praxisbeispiel: Data Transformation

Angenommen, wir haben eine Liste von Preisen in Euro, und wir wollen Preise inklusive 19% MwSt berechnen:

preise = [10, 20, 30, 40]
mwst_preise = list(map(lambda x: x*1.19, preise))
print(mwst_preise)  # [11.9, 23.8, 35.7, 47.6]
  • Lambda + map ersetzt eine Schleife und ist kompakt

10. Vorteile von Funktionen

  1. Wiederverwendbarkeit – Code muss nicht mehrfach geschrieben werden
  2. Lesbarkeit – komplexe Berechnungen können in Module ausgelagert werden
  3. Parameter – Funktionen können flexibel auf unterschiedliche Daten angewendet werden
  4. Modularität – einzelne Teile eines Projekts lassen sich isoliert testen

11. Tipps für Data Science

  • Kleine Funktionen schreiben – eine Funktion sollte eine Aufgabe erledigen
  • Lambda sparsam verwenden – nur für einfache Transformationen
  • Dokumentation – jede Funktion mit Docstring dokumentieren:
def addiere(a, b):
    """
    Addiert zwei Zahlen und gibt das Ergebnis zurück.
    """
    return a + b
  • Funktionen für Pandas – später können Funktionen zusammen mit apply() verwendet werden, um DataFrames effizient zu transformieren

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert