Skip to content

Kapitel 12: Module und Pakete

🎯 Lernziele

In diesem Kapitel lernst du:

  • Was Module und Pakete sind
  • Eingebaute (Built-in) Module verwenden
  • Module importieren und verwenden
  • Drittanbieter-Module installieren
  • Eigene Module erstellen

12.1 Kernkonzepte: Was sind Module und Pakete?

📦 Modul (Module)

Ein Modul ist eine .py-Datei, die Python-Code enthält.

mein_projekt/
├── main.py          # Hauptprogramm
├── rechner.py       # Modul: Funktionen für Rechnen
└── utils.py         # Modul: Hilfsfunktionen

📁 Paket (Package)

Ein Paket ist ein Ordner, der mehrere Module enthält (mit __init__.py).

mein_paket/
├── __init__.py      # Zeigt Python, dass es ein Paket ist
├── modul1.py
└── modul2.py

🎁 Vorteile von Modulen

  • Code-Organisation: Code in logische Dateien aufteilen
  • Wiederverwendbarkeit: Module in anderen Projekten verwenden
  • Namensräume: Vermeidet Namenskonflikte

12.2 Eingebaute Module (Built-in)

🔢 math-Modul (Mathematik)

python
import math

# Konstante
print(math.pi)    # 3.141592653589793
print(math.e)     # 2.718281828459045

# Funktionen
print(math.sqrt(16))    # 4.0 (Wurzel)
print(math.ceil(3.1))   # 4 (Aufrunden)
print(math.floor(3.9))  # 3 (Aburunden)
print(math.factorial(5)) # 120 (Fakultät)
print(math.pow(2, 3))   # 8.0 (Potenz)

🎲 random-Modul (Zufall)

python
import random

# Zufallszahl (Gleitkomma, 0.0 - 1.0)
print(random.random())

# Zufallszahl (Ganzzahl, a bis b)
print(random.randint(1, 10))  # 1 bis 10
print(random.randrange(0, 100, 2))  # Gerade Zahl 0-99

# Aus Liste wählen
früchte = ["Apfel", "Banane", "Orange"]
print(random.choice(früchte))

# Liste mischen
karten = [1, 2, 3, 4, 5]
random.shuffle(karten)
print(karten)

⏰ time-Modul (Zeit)

python
import time

# Aktuelle Zeit (Seconds seit 1970)
print(time.time())

# Warten (in Sekunden)
print("Start...")
time.sleep(2)  # 2 Sekunden warten
print("2 Sekunden spätter")

# Zeit formatieren
aktuelle_zeit = time.localtime()
formatiert = time.strftime("%Y-%m-%d %H:%M:%S", aktuelle_zeit)
print(formatiert)  # 2024-01-15 14:30:45

📅 datetime-Modul (Datum und Zeit)

python
from datetime import datetime, timedelta

# Aktuelles Datum und Zeit
jetzt = datetime.now()
print(jetzt)  # 2024-01-15 14:30:45.123456

# Datum formatieren
print(jetzt.strftime("%d.%m.%Y %H:%M"))  # 15.01.2024 14:30

# Zeitdifferenz
morgen = jetzt + timedelta(days=1)
print(morgen)  # Morgen um dieselbe Zeit

# Datumsberechnung
geburtsdatum = datetime(2000, 5, 15)
alter = jetzt - geburtsdatum
print(f"Alter in Tagen: {alter.days}")

12.3 Module importieren

📥 Verschiedene Import-Arten

1. Ganzes Modul importieren

python
import math

print(math.sqrt(16))  # 4.0
print(math.pi)         # 3.14159...

2. Bestimmte Funktionen importieren

python
from math import sqrt, pi

print(sqrt(16))  # 4.0 (kein math. nötig!)
print(pi)          # 3.14159...

3. Alles importieren (NICHT empfohlen!)

python
from math import *  # Besser vermeiden (Namenskonflikte!)

print(sqrt(16))

4. Mit Alias (Kurzname) importieren

python
import datetime as dt
import numpy as np  # Üblich bei Bibliotheken

print(dt.datetime.now())

12.4 Drittanbieter-Module

📦 Module installieren (pip)

bash
# Modul installieren
pip install requests

# Mehrere Module installieren
pip install requests pandas numpy

# Modul deinstallieren
pip uninstall requests

# Installierte Module anzeigen
pip list

# Modul-Version überprüfen
pip show requests

🌐 requests-Modul (HTTP-Anfragen)

python
import requests

# Einfache GET-Anfrage
response = requests.get("https://api.github.com")
print(response.status_code)  # 200 (OK)
print(response.headers["Content-Type"])

# JSON-Daten abrufen
daten = response.json()
print(daten)

📊 pandas-Modul (Datenanalyse - Einfach)

python
import pandas as pd

# Einfache Datentabelle
daten = {
    "Name": ["Max", "Anna", "Tom"],
    "Alter": [25, 22, 30],
    "Stadt": ["Berlin", "München", "Hamburg"]
}

df = pd.DataFrame(daten)
print(df)

12.5 Eigene Module erstellen

📝 Eigenes Modul erstellen

Datei: meine_math.py

python
# meiene_math.py

def addiere(a, b):
    """Addiert zwei Zahlen"""
    return a + b

def subtrahiere(a, b):
    """Subtrahiert zwei Zahlen"""
    return a - b

def multipliziere(a, b):
    """Multipliziert zwei Zahlen"""
    return a * b

# Konstante
PI = 3.14159

📥 Eigenes Modul verwenden

Datei: main.py

python
# Methode 1: Ganzes Modul importieren
import meiene_math

print(meiene_math.addiere(5, 3))  # 8
print(meiene_math.PI)                # 3.14159

# Methode 2: Bestimmte Funktionen importieren
from meiene_math import addiere, PI

print(addiere(5, 3))  # 8
print(PI)              # 3.14159

🏳️ __name__-Überprüfung

python
# meiene_math.py

def addiere(a, b):
    return a + b

# Dieser Code wird nur ausgeführt, wenn die Datei direkt gestartet wird
if __name__ == "__main__":
    print("Test der Funktionen:")
    print(addiere(5, 3))

⚠️ Häufige Fehler

❌ Fehler 1: Modul nicht gefunden

python
# Falsch (ModuleNotFoundError!)
# import meiene_math  # Datei nicht im selben Ordner!

# Richtig: Datei im selben Verzeichnis sicherstellen

❌ Fehler 2: Namenskonflikte

python
# Falsch (eigene Funktion überschreibt Modul-Funktion!)
from math import sqrt
def sqrt(x):  # Überschreibt math.sqrt!
    pass

# Besser: Alias verwenden
from math import sqrt as math_sqrt

❌ Fehler 3: Alles importieren (from ... import *)

python
# Schlecht (kann Namenskonflikte verursachen!)
from math import *

# Besser: Explizit importieren
from math import sqrt, pi

📝 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • ✅ Was Module (mein_modul.py) und Pakete (ordner/) sind
  • ✅ Eingebaute Module zu verwenden (math, random, time, datetime)
  • ✅ Module zu importieren (import, from ... import)
  • ✅ Drittanbieter-Module mit pip zu installieren
  • ✅ Eigene Module zu erstellen und zu verwenden

🎯 Übung

  1. Schreibe ein eigenes Modul mit Funktionen für String-Operationen
  2. Verwende das requests-Modul, um Daten von einer API abzurufen
  3. Erstelle ein Paket mit mehreren Modulen für eine Studentenverwaltung
  4. Installiere das pandas-Modul und lies eine CSV-Datei ein

⏭️ Nächstes Kapitel

In Kapitel 13 lernen wir Dateioperationen - Daten in Dateien speichern und lesen!

Frei für alle Anfänger