Module und Pakete in Python organisieren
Sobald Programme wachsen, brauchst du Struktur. Lerne, wie du Code in Module und Pakete aufteilst, importierst und sauber organisierst.
Solange ein Programm klein ist, passt alles bequem in eine einzige Datei. Doch sobald dein Projekt wächst, wird eine riesige Datei schnell unübersichtlich. Die Lösung heißt Module und Pakete: Damit teilst du deinen Code in logische Einheiten auf, die du wiederverwenden und gezielt importieren kannst. In diesem Beitrag lernst du, wie du eigene Module schreibst, sie importierst, zu Paketen zusammenfasst und die riesige Standardbibliothek von Python nutzt.
Was ist ein Modul?
Ein Modul ist einfach eine Python-Datei mit der Endung .py, die Funktionen, Klassen oder Variablen enthält. Du kannst den Inhalt einer solchen Datei in einer anderen Datei nutzen, indem du sie importierst. Stell dir vor, du hast eine Datei rechner.py:
# Datei: rechner.py
def addiere(a, b):
return a + b
def subtrahiere(a, b):
return a - b
PI = 3.14159Diese Datei ist nun ein Modul namens rechner. In einer anderen Datei im selben Ordner kannst du seine Funktionen verwenden, ohne sie noch einmal zu schreiben.
Module importieren
Es gibt mehrere Wege, ein Modul zu importieren. Mit import rechner lädst du das ganze Modul und greifst über den Modulnamen darauf zu. Mit from ... import ... holst du dir gezielt einzelne Funktionen.
# Variante 1: ganzes Modul importieren
import rechner
print(rechner.addiere(2, 3)) # 5
print(rechner.PI) # 3.14159
# Variante 2: gezielt importieren
from rechner import subtrahiere
print(subtrahiere(10, 4)) # 6
# Variante 3: mit Aliasname
import rechner as r
print(r.addiere(1, 1)) # 2Welche Variante du wählst, ist Geschmackssache. import modul macht klar, woher eine Funktion stammt, während from modul import funktion kürzer ist. Vermeide aber from modul import *, weil dadurch unklar wird, welche Namen importiert wurden.
Der __name__-Trick
Jedes Modul hat eine eingebaute Variable __name__. Wird die Datei direkt ausgeführt, hat __name__ den Wert "__main__". Wird sie dagegen importiert, enthält __name__ den Modulnamen. Damit kannst du Testcode schreiben, der nur beim direkten Ausführen läuft.
# Datei: rechner.py
def addiere(a, b):
return a + b
if __name__ == "__main__":
# Dieser Block läuft nur bei direkter Ausführung,
# nicht beim Import.
print("Test:", addiere(2, 3)) # Test: 5So kannst du ein Modul gleichzeitig als wiederverwendbare Bibliothek und als eigenständiges Skript nutzen. Beim Import bleibt der Testblock einfach stumm.
Pakete: Module gruppieren
Ein Paket ist ein Ordner, der mehrere zusammengehörige Module enthält. In älteren Python-Versionen brauchte ein Paket eine Datei __init__.py; sie kann auch heute noch leer vorhanden sein, um den Ordner ausdrücklich als Paket zu kennzeichnen. Eine typische Struktur sieht so aus:
mein_projekt/
main.py
mathe/
__init__.py
grundrechnen.py
geometrie.pyAus main.py importierst du dann Module aus dem Paket über die Punkt-Schreibweise:
# Datei: main.py
from mathe.grundrechnen import addiere
from mathe import geometrie
print(addiere(5, 7)) # 12
print(geometrie.kreisflaeche(3)) # z. B. 28.27So entsteht eine klare Hierarchie: Das Paket mathe bündelt thematisch verwandte Module, die du gezielt ansprechen kannst.
Die Standardbibliothek nutzen
Python bringt eine riesige Standardbibliothek mit – fertige Module für unzählige Aufgaben, die du sofort importieren kannst, ohne etwas zu installieren. Damit musst du das Rad nicht neu erfinden.
import math
import random
import os
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.141592653589793
print(random.randint(1, 6)) # zufällige Zahl 1-6
print(random.choice(["a", "b", "c"])) # zufällige Auswahl
print(os.getcwd()) # aktuelles ArbeitsverzeichnisModule wie math, random, os, datetime oder json decken viele Alltagsaufgaben ab. Ein Blick in die offizielle Dokumentation lohnt sich, bevor du etwas selbst programmierst.
Fazit
Module und Pakete sind das Werkzeug, mit dem du größere Python-Projekte übersichtlich hältst. Du hast gelernt, wie eine .py-Datei zum Modul wird, welche Import-Varianten es gibt, wie der __name__-Trick Testcode steuert, wie du Module in Paketen gruppierst und wie du die mächtige Standardbibliothek nutzt. Mein Tipp: Zerlege deinen Code früh in sinnvolle Einheiten – eine Datei pro Themenbereich. So bleibt dein Projekt wartbar, und einzelne Teile lassen sich leicht in anderen Programmen wiederverwenden.