Main-Block (`if __name__ == "__main__"`)

Zurück zum Labor Zur Programmieraufgabe

Modul 1 — Was ist if __name__ == "__main__"?

Ein Schalter, der zwischen „direkt ausgeführt" und „importiert" unterscheidet.

Begriff

Jede Python-Datei hat eine eingebaute Variable __name__. Wird die Datei direkt ausgeführt (python meine_datei.py), enthält __name__ den Wert "__main__". Wird die Datei dagegen von einer anderen Datei importiert, enthält __name__ den Modulnamen.

Mit dem Check

if __name__ == "__main__":
    <Skript-Code>

trennst du sauber zwischen Bibliotheks-Nutzung (Funktionen werden importiert) und Skript-Nutzung (das Programm soll loslaufen). Importiert jemand deine Datei, läuft der Main-Block nicht — die Funktionen stehen aber zur Verfügung.

Beispiel 1.1 — __name__ ausgeben

Python wird geladen…
Ausgabe

    

Modul 2 — Aufbau einer sauberen Datei

Funktionen oben, Ablauf im Main-Block.

Empfohlenes Layout

Eine gut strukturierte Python-Datei besteht aus zwei Teilen:

  • Oben: alle def-Funktionen — sie definieren, was das Programm tun kann.
  • Unten im if __name__ == "__main__":-Block: die konkrete Reihenfolge der Aufrufe — was diesmal getan werden soll.

Im Main-Block werden Variablen angelegt, die Funktionen mit diesen Variablen aufgerufen und die Rückgaben in neuen Variablen gespeichert.

Beispiel 2.1 — Funktion oben, Aufruf unten

Python wird geladen…
Ausgabe

    

Modul 3 — Aufruf, Rückgabe, Variablen

Das wiederkehrende Muster im Main-Block.

Muster

Im Main-Block gilt immer:

  1. Eingaben zuerst in Variablen speichern (z. B. name = "Mia").
  2. Funktion mit diesen Variablen aufrufen.
  3. Rückgabe in einer neuen Variable auffangen (z. B. text = hallo(name)).
  4. Erst dann print() aufrufen.

So lassen sich Zwischenergebnisse später noch weiterverwenden, und der Code bleibt übersichtlich.

TippIn den Aufgaben

Bei den meisten Aufgaben liest du die Eingabewerte im Main-Block mit input() ein (wie im Modul „Variablen" eingeführt). Die Prüfung speist diese Werte automatisch ein und vergleicht deine Ausgabe Zeichen für Zeichen — gib dort nur das Geforderte aus.

Bei zwei Aufgaben (Teil 4 und Teil 6) setzt du die Werte dagegen selbst im Main-Block — ohne input(). Dort steht das Definieren der Funktion im Mittelpunkt, und die Prüfung ruft deine Funktion direkt mit mehreren Werten auf.

Beispiel 3.1 — Eingabe, Aufruf, Rückgabe

Python wird geladen…
Ausgabe

    

Mehrere Rückgabewerte

Eine Funktion darf mit return a, b mehrere Werte gleichzeitig zurückgeben. Auf der Aufrufseite werden sie auf zwei Variablen verteilt — das nennt sich Tupel-Unpacking.

Beispiel 3.2 — zwei Rückgaben auf zwei Variablen

Python wird geladen…
Ausgabe

    

Modul 4 — Warum überhaupt der Check?

Was passiert ohne if __name__ == "__main__"?

Das Problem

Schreibst du Funktionsaufrufe und print() einfach direkt in die Datei (ohne Main-Block), werden sie auch beim Import ausgeführt. Das ist fast nie das, was du willst — du wolltest ja nur die Funktion benutzen.

Mit dem Main-Block ist klar: „Diese Zeilen laufen nur, wenn ich die Datei direkt starte".

Beispiel 4.1 — direkte Ausführung mit Main-Block

Python wird geladen…
Ausgabe

    

TippFaustregel

In dieser Aufgabenreihe gilt durchgängig: Funktion oben definieren, im Main-Block die Werte bereitstellen (per input() einlesen oder selbst setzen), die Funktion aufrufen und das Ergebnis ausgeben. Du musst also nicht alles einlesen — manchmal legst du die Werte einfach selbst fest.

Quellen & weiterführende Literatur

Wo das hier vermittelte Wissen offiziell dokumentiert ist.

Offizielle Python-Dokumentation

Tutorials & Lehrbücher

  • Real Python — Defining Main Functions in Python: realpython.com/python-main-function
  • Theis, Thomas: Einstieg in Python. 7. Auflage, Rheinwerk Verlag, 2023 — Abschnitt zu Modulen und Skripten.
  • Klein, Bernd: Einführung in Python 3. 4. Auflage, Hanser Verlag, 2021 — Kapitel zu Modulen.