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 + waffenbonusDaneben (in denselben Ordner!) eine Datei spiel.py:
import kampflogik
print(kampflogik.schaden(7)) # 9Starte 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-PrefixFalkenmoor 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()undladen()ü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!
- Nach
import rechnung— wie rufst dunetto(200)daraus auf? - Wo muss
kampflogik.pyliegen, damitimport kampflogikklappt? - Läuft der
__main__-Block, wenn deine Datei importiert wird? - Warum teilt man Programme in Dateien auf?
app.pybrauchtEngineaus engine.py — welche Import-Zeile passt?
Quiz-Lösungen anzeigen
rechnung.netto(200)— volles Modul, dann Funktion.- In denselben Ordner wie die Datei, die es importiert (oder im Python-Suchpfad).
- Nein — er läuft nur beim direkten Start:
python3 kampflogik.py. - Übersicht, Wiederverwendung und kleine, testbare Bausteine.
from engine import Engine— oderimport enginemitengine.Engine.
Mehr aus der Kategorie „Zum Spiel“
- Zum Spiel: Fehler lesen 12.09.2026
- Zum Spiel: Text und Befehle 12.09.2026
- Zum Spiel: JSON — die Welt als Daten 12.09.2026
- Drei Räume — dein erstes Textabenteuer 12.09.2026