Python lernen · Schritt 12 von 14
Im MUD: app.py, engine.py und db.py sind genau das

Zum Spiel · 12.09.2026

Zum Spiel: Mehrere Dateien

Warum Falkenmoor aus app.py, engine.py und db.py besteht — und wie du deine eigenen Programme mit import in Dateien aufteilst.

Nach ein paar hundert Zeilen wird eine Datei unlesbar. Falkenmoor teilt deshalb auf: app.py kümmert sich um Webserver und Verbindungen, engine.py enthält die Spiellogik, db.py speichert. Jede Datei hat eine Aufgabe — und jede kann die anderen benutzen. Genau das lernst du hier.

Eine Datei ist ein Modul

Lege eine Datei kampflogik.py an:

def schaden(staerke, waffenbonus=2):
    """Berechnet den Schaden eines Angriffs."""
    return staerke + waffenbonus

Daneben (in denselben Ordner!) eine Datei spiel.py:

import kampflogik

print(kampflogik.schaden(7))   # 9

Starte python3 spiel.py — Python findet kampflogik.py automatisch, weil beide im gleichen Ordner liegen. Der Dateiname (ohne .py) ist der Modulname. Aufruf mit vollem Namen: modul.funktion().

from … import: nur das Nötige holen

from kampflogik import schaden

print(schaden(7))   # ohne Modul-Prefix

Falkenmoor benutzt alle drei Formen: app.py sagt import db und from engine import Engine, Spieler — voller Name oder gezielt importiert, je nachdem, wie oft etwas gebraucht wird.

if __name__ == "__main__": der Selbsttest-Block

def schaden(staerke, waffenbonus=2):
    return staerke + waffenbonus

if __name__ == "__main__":
    # läuft nur bei: python3 kampflogik.py
    print("Selbsttest:", schaden(7))

Beim Import ist __name__ nicht "__main__", sondern "kampflogik" — der Testblock bleibt stumm. So kann eine Datei Werkzeug und Probefahrt in einem sein.

Playground-Hinweis: Der Online-Interpreter kennt nur eine „Datei“ — diese Übungen brauchen eine lokale Installation (python3 spiel.py). Alles andere aus dieser Reihe läuft im Browser.

So übst du das

  • Werkzeugkasten: eine Datei mit deinen Helferfunktionen (ist_gerade, flaeche, …) und eine, die sie benutzt.
  • db_sim.py: ein Mini-Modul mit speichern() und laden() über ein globales Dict.
  • Trennungs-Denkspiel: Was gehört in die Logik-, was in die Daten-Datei? Begründe in je einem Satz.
  • Selbsttests: In jedes Modul einen __main__-Block mit zwei Probeaufrufen.

Übungen

Übung 1 — Zwei Dateien, ein Ergebnis

Lege kampflogik.py mit schaden() an und lass spiel.py Schaden: 9 ausgeben. Beide Dateien in denselben Ordner.

Musterlösung zeigen
# kampflogik.py
def schaden(staerke, waffenbonus=2):
    return staerke + waffenbonus

# spiel.py
import kampflogik
print("Schaden:", kampflogik.schaden(7))

Übung 2 — Die Kurzform

Ändere spiel.py auf from kampflogik import schaden — der Aufruf wird kürzer.

Musterlösung zeigen
# spiel.py (Version 2)
from kampflogik import schaden
print("Schaden:", schaden(7))

Übung 3 — Der stille Import

Baue in kampflogik.py einen __main__-Block mit einem Selbsttest. Starte die Datei direkt (Test erscheint) und dann spiel.py (Test bleibt stumm).

Musterlösung zeigen
# kampflogik.py — ergänze am Ende:
def schaden(staerke, waffenbonus=2):
    return staerke + waffenbonus

if __name__ == "__main__":
    print("Selbsttest:", schaden(7))

# python3 kampflogik.py → Selbsttest erscheint
# python3 spiel.py  → bleibt stumm

Übung 4 — Die dritte Datei

Erweitere kampflogik.py um heilung(hp, trank=20) und nutze beide Funktionen in spiel.py.

Musterlösung zeigen
# kampflogik.py
def schaden(staerke, waffenbonus=2):
    return staerke + waffenbonus

def heilung(hp, trank=20):
    return hp + trank

# spiel.py
from kampflogik import schaden, heilung
print(schaden(7), heilung(23))

Quiz — Teste dich

Erst überlegen, dann aufklappen — so trainiert es am meisten!

  1. Nach import rechnung — wie rufst du netto(200) daraus auf?
  2. Wo muss kampflogik.py liegen, damit import kampflogik klappt?
  3. Läuft der __main__-Block, wenn deine Datei importiert wird?
  4. Warum teilt man Programme in Dateien auf?
  5. app.py braucht Engine aus engine.py — welche Import-Zeile passt?
Quiz-Lösungen anzeigen
  1. rechnung.netto(200) — volles Modul, dann Funktion.
  2. In denselben Ordner wie die Datei, die es importiert (oder im Python-Suchpfad).
  3. Nein — er läuft nur beim direkten Start: python3 kampflogik.py.
  4. Übersicht, Wiederverwendung und kleine, testbare Bausteine.
  5. from engine import Engine — oder import engine mit engine.Engine.

Mehr aus der Kategorie „Zum Spiel“

← Zurück zum Lehrpfad