Appearance
Kapitel 11: Funktionen
🎯 Lernziele
In diesem Kapitel lernst du:
- Was Funktionen sind und warum sie nützlich sind
- Funktionen definieren und aufrufen
- Parameter und Rückgabewerte verwenden
- Verschiedene Arten von Parametern
- Lambda-Funktionen (anonyme Funktionen)
11.1 Kernkonzept: Was sind Funktionen?
🤔 Warum Funktionen?
Problem ohne Funktionen:
python
# Code-Wiederholung (Copy-Paste)
print("Hallo Max!")
print("Willkommen beim Python-Kurs!")
print("-" * 30)
print("Hallo Anna!")
print("Willkommen beim Python-Kurs!")
print("-" * 30)
print("Hallo Tom!")
print("Willkommen beim Python-Kurs!")
print("-" * 30)Lösung mit Funktionen:
python
# Funktion definieren (einmal schreiben!)
def begüß():
print(f"Hallo {name}!")
print("Willkommen beim Python-Kurs!")
print("-" * 30)
# Funktion aufrufen (mehrfach verwenden!)
begüß("Max")
begüß("Anna")
begüß("Tom")🎁 Vorteile von Funktionen
- ✅ Code-Wiederverwendung: Einmal schreiben, mehrmals verwenden
- ✅ Bessere Lesbarkeit: Code ist übersichtlicher
- ✅ Einfachere Wartung: Fehler an einer Stelle beheben
- ✅ Modularer Aufbau: Code in logische Blöcke teilen
11.2 Funktionen definieren und aufrufen
📏 Grundlegende Syntax
python
# Funktion definieren
def funktionsname(parameter):
"""Docstring: Beschreibung der Funktion"""
# Funktionskörper (eingerückt!)
anweisung1
anweisung2
return rückgabewert # Optional
# Funktion aufrufen
funktionsname(argument)💡 Einfaches Beispiel
python
# Funktion definieren
def sag_hallo():
print("Hallo!")
print("Willkommen bei Python!")
# Funktion aufrufen
sag_hallo()
sag_hallo() # Mehrmals aufrufbar!Ausgabe:
Hallo!
Willkommen bei Python!
Hallo!
Willkommen bei Python!🎯 Praxisbeispiel: Begrüßungsfunktion
python
# Funktion mit Parameter
def begüß(name):
print(f"Hallo {name}!")
print("Schön, dass du da bist!")
# Aufruf mit Argument
begüß("Max") # name wird "Max"
begüß("Anna") # name wird "Anna"Ausgabe:
Hallo Max!
Schön, dass du da bist!
Hallo Anna!
Schön, dass du da bist!11.3 Funktionen mit Rückgabewert (return)
🔙 return-Anweisung
python
# Funktion mit Rückgabe
def addiere(a, b):
ergebnis = a + b
return ergebnis # Gibt Wert zurück
# Rückgabe verwenden
summe = addiere(5, 3)
print(summe) # 8
# Direkt verwenden
print(addiere(10, 20)) # 30💡 Mehrere Rückgabewerte
python
# Funktion gibt mehrere Werte zurück (als Tupel!)
def min_max(zahlen):
return min(zahlen), max(zahlen)
# Aufruf
zahlen = [5, 2, 8, 1, 9]
minimum, maximum = min_max(zahlen) # Entpacken!
print(f"Min: {minimum}, Max: {maximum}") # Min: 1, Max: 9⚠️ Wichtig: return beendet Funktion!
python
def test():
print("Vor return")
return 42
print("Nach return") # Wird NICHT ausgeführt!
ergebnis = test()
print(ergebnis) # 4211.4 Parameter und Argumente
📋 Verschiedene Arten von Parametern
1. Positionsparameter (Reihenfolge wichtig!)
python
def begüß(vorname, nachname):
print(f"Hallo {vorname} {nachname}!")
begüß("Max", "Muster") # Richtig
# begüß("Muster", "Max") # Falsch (Vertauscht!)2. Schlüsselwortparameter (Reihenfolge egal!)
python
def begüß(vorname, nachname):
print(f"Hallo {vorname} {nachname}!")
# Mit Schlüsselworten (Reihenfolge egal)
begüß(nachname="Muster", vorname="Max")3. Standardparameter (Vorgabewerte)
python
def begüß(name, sprache="Deutsch"):
if sprache == "Deutsch":
print(f"Hallo {name}!")
else:
print(f"Hello {name}!")
begüß("Max") # Hallo Max! (Standard)
begüß("Max", "Englisch") # Hello Max!🎯 Beliebig viele Parameter
*args (Positionsargumente)
python
def summe(*zahlen):
ergebnis = 0
for z in zahlen:
ergebnis += z
return ergebnis
print(summe(1, 2, 3)) # 6
print(summe(1, 2, 3, 4, 5)) # 15**kwargs (Schlüsselwortargumente)
python
def zeige_info(**info):
for schlüssel, wert in info.items():
print(f"{schlüssel}: {wert}")
zeige_info(name="Max", alter=25, stadt="Berlin")
# name: Max
# alter: 25
# stadt: Berlin11.5 Lambda-Funktionen (Anonyme Funktionen)
🏹 Einfache Lambda-Funktionen
python
# Normale Funktion
def quadrat(x):
return x ** 2
# Lambda-Version (einzeilig!)
quadrat = lambda x: x ** 2
print(quadrat(5)) # 25🎯 Lambda mit filter(), map(), sorted()
python
zahlen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Nur gerade Zahlen (filter)
gerade = list(filter(lambda x: x % 2 == 0, zahlen))
print(gerade) # [2, 4, 6, 8, 10]
# Alle Zahlen verdoppeln (map)
verdoppelt = list(map(lambda x: x * 2, zahlen))
print(verdoppelt) # [2, 4, 6, ..., 20]
# Nach Länge sortieren (sorted)
wörter = ["Python", "C", "JavaScript", "Go"]
sortiert = sorted(wörter, key=lambda w: len(w))
print(sortiert) # ['C', 'Go', 'Python', 'JavaScript']11.6 Praxisbeispiel: Taschenrechner
python
# Funktionen definieren
def addiere(a, b):
return a + b
def subtrahiere(a, b):
return a - b
def multipliziere(a, b):
return a * b
def dividiere(a, b):
if b == 0:
return "Fehler: Division durch 0!"
return a / b
# Hauptprogramm
print("=== Einfacher Taschenrechner ===")
a = float(input("Gib die erste Zahl ein: "))
op = input("Gib den Operator ein (+, -, *, /): ")
b = float(input("Gib die zweite Zahl ein: "))
if op == "+":
print(f"Ergebnis: {addiere(a, b)}")
elif op == "-":
print(f"Ergebnis: {subtrahiere(a, b)}")
elif op == "*":
print(f"Ergebnis: {multipliziere(a, b)}")
elif op == "/":
print(f"Ergebnis: {dividiere(a, b)}")
else:
print("Ungültiger Operator!")⚠️ Häufige Fehler
❌ Fehler 1: Funktion aufrufen vor Definition
python
# Falsch (NameError!)
sage_hallo() # Funktion noch nicht definiert!
def sage_hallo():
print("Hallo!")❌ Fehler 2: Funktion definieren mit gleichen Parameternamen
python
# Falsch
def test(x, x): # SyntaxError!
pass❌ Fehler 3: return vergessen
python
# Falsch (gibt None zurück!)
def addiere(a, b):
ergebnis = a + b
# return ergebnis # Vergessen!
print(addiere(5, 3)) # None📝 Zusammenfassung
In diesem Kapitel hast du gelernt:
- ✅ Was Funktionen sind und warum sie nützlich sind
- ✅ Funktionen zu definieren (
def) - ✅ Parameter und Argumente zu verwenden
- ✅ Rückgabewerte mit
returnzu verwenden - ✅ Verschiedene Parametertypen (
*args,**kwargs) - ✅ Lambda-Funktionen zu verwenden
🎯 Übung
- Schreibe eine Funktion, die den Flächeninhalt eines Rechtecks berechnet
- Schreibe eine Funktion, die prüft, ob eine Zahl prim ist
- Schreibe eine Funktion, die eine Liste von Zahlen sortiert (Bubble Sort)
- Verwende Lambda-Funktionen mit
map()undfilter()
⏭️ Nächstes Kapitel
In Kapitel 12 lernen wir Module und Pakete - wie man den Code in separate Dateien aufteilt!
