Prüfungsbesprechung
Zwei Stolpersteine sind in der Prüfung besonders oft aufgetaucht. Beide schauen wir uns hier nochmal ganz kompakt an.
1. Codeblöcke in Python
Jeder Codeblock in Python besteht aus zwei Teilen:
- Blockkopf — endet immer mit einem Doppelpunkt
: - Blockkörper — alles, was dazugehört, ist eingerückt (Tabulator)
Blöcke können verschachtelt werden: Im Körper eines Blocks kann ein neuer Blockkopf stehen — dessen Körper wird dann eine Stufe weiter eingerückt. Und das funktioniert bei allen Blockarten gleich: def, if, elif, else, for, while.
def funktion(n): # Blockkopf → Doppelpunkt
print("Im Funktionskörper") # Blockkörper → eingerückt
for i in range(n): # Blockkopf im Block
if i % 2 == 0: # und noch einer
print(i, "ist gerade") # drei Stufen tief
print("Wieder nur in der Funktion") # gehört zur for-Schleife NICHT mehr
Daran erkennen Sie allesDie Einrückung ist in Python keine Verschönerung — sie bestimmt, was wozu gehört. Eine Zeile weiter links = der Block ist zu Ende.
2. Funktionsvariablen gehören in die Funktion
- Der Codeblock einer Funktion ist wie ein Gefängnis: ein separater Speicher, ein eigenes kleines Unterprogramm.
- Was drinnen passiert, ist getrennt vom Hauptprogramm — die Funktion arbeitet nur mit dem, was sie als Parameter erhält und was sie selbst anlegt.
- Darum gilt: Variablen, die eine Funktion braucht und verändert, werden in der Funktion angelegt — nicht draussen im Hauptprogramm.
So sah der Fehler in vielen Prüfungen aus:
summe = 0 # ❌ draussen im Hauptprogramm angelegt
def summe_teilbar(n):
for i in range(1, n + 1):
if i % 3 == 0:
summe = summe + i # 💥 Fehler: die Funktion kennt "ihr" summe nicht
return summe
Und so gehört es:
def summe_teilbar(n):
summe = 0 # ✅ gehört der Funktion — im Funktionskörper angelegt
for i in range(1, n + 1):
if i % 3 == 0:
summe = summe + i
return summe
print(summe_teilbar(10)) # das Resultat verlässt das Gefängnis nur via return
MerksatzAlles, was die Funktion braucht, kommt als Parameter rein. Alles, was sie zurückgeben will, geht mit
returnraus. Dazwischen lebt jede Variable im Funktionskörper — und nirgendwo sonst.
Zum selbst NachschauenAuf pythontutor.com können Sie beliebigen Python-Code Schritt für Schritt ausführen und zusehen, wie für jeden Funktionsaufruf ein eigener, separater Speicherrahmen entsteht — und nach dem
returnwieder verschwindet. Kopieren Sie das Beispiel oben hinein und klicken Sie sich durch.