Appearance
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
pipzu installieren - ✅ Eigene Module zu erstellen und zu verwenden
🎯 Übung
- Schreibe ein eigenes Modul mit Funktionen für String-Operationen
- Verwende das
requests-Modul, um Daten von einer API abzurufen - Erstelle ein Paket mit mehreren Modulen für eine Studentenverwaltung
- 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!
