Warum Typen überhaupt zählen
Ein Typ ist einfach eine Kategorie, die Python sagt, wie sich ein Wert verhalten soll. Zwei Ganzzahlen zu addieren bedeutet Arithmetik; zwei Strings zu addieren bedeutet Verkettung; einen String zu einer Ganzzahl zu addieren ist ein Fehler. Der Typ eines Werts bestimmt, welche Operationen auf ihm sinnvoll sind.
Python hat einen kleinen, freundlichen Satz eingebauter Typen. Vier davon — int, float, str, bool — wirst du in fast jedem Programm nutzen, das du schreibst. Der Rest taucht auf, sobald du anfängst, Daten in Sammlungen zu organisieren.
Zahlen: int und float
Zwei Arten von Zahlen, und Python wählt, welche du bekommst, daran, wie du sie geschrieben hast:
Kein Dezimalpunkt? Du bekommst ein int. Ein Dezimalpunkt? Du bekommst ein float. Arithmetik mischt beide frei — jede Operation mit einem float ergibt einen float:
Ganzzahlen können in Python so groß werden, wie dein Arbeitsspeicher es erlaubt — keine Überläufe, keine feste 32- oder 64-Bit-Grenze. Du kannst 2 ** 1000 berechnen und Python reicht dir jede Ziffer zurück.
Floats folgen den üblichen IEEE-754-Regeln, was ein paar klassische Überraschungen mit sich bringt:
Das gibt 0.30000000000000004 aus, nicht 0.3. Das ist kein Python-Bug — so funktioniert binäre Fließkommaarithmetik in jeder Sprache. Wenn du exakte Dezimalwerte brauchst (Geldbeträge zum Beispiel), nimm stattdessen das Modul decimal. Für alles andere reicht meist eine Rundung bei der Anzeige.
Strings: str
Strings sind Zeichenfolgen. Setz sie in einfache oder doppelte Anführungszeichen — Python ist egal welche, solange öffnendes und schließendes Zeichen übereinstimmen:
Dreifach zitierte Strings (""" ... """) erstrecken sich über mehrere Zeilen:
Strings haben eine riesige API, die du mit der Zeit lernst — Slicing, Methoden wie .upper(), .split(), .replace() und die f-String-Formatierung, die dir f"Hello, {name}" erlaubt. Es gibt als Nächstes eine eigene Seite zu Strings.
Booleans: bool
Zwei Werte, genau so geschrieben wie gezeigt — True und False, mit großem Anfangsbuchstaben. Vergleiche liefern Booleans:
Unter der Haube sind True und False wörtlich 1 und 0, also kannst du Booleans aufaddieren, wenn du zählen willst, wie viele Bedingungen wahr waren:
None: das Fehlen eines Werts
None ist Pythons Art zu sagen „kein Wert“. Funktionen, die nichts explizit zurückgeben, geben None zurück. Du nutzt es auch als Platzhalter:
Die Konvention: mit is None und is not None prüfen — nicht mit == None. is prüft Identität, und das meinst du hier tatsächlich.
Listen, Tupel, Sets, Dictionaries
Das sind die vier eingebauten Sammlungstypen. Jeder bekommt seine eigene Seite, aber hier die Kurzfassung, damit du sie erkennst:
Faustregeln:
- List: eine Folge, die du erwartest zu ändern. Hinzufügen, Entfernen, Sortieren — alles in Ordnung.
- Tuple: eine Folge, die du vor Änderungen schützen willst. Oft für feste Datensätze wie
(x, y)-Koordinaten. - Set: ein Beutel eindeutiger Elemente, wenn Duplikate ein Bug wären.
- Dict: Nachschlagen per Schlüssel. Die JSON-förmige Struktur.
Zwischen Typen umwandeln
Python wandelt Typen nicht automatisch für dich um, wenn das riskant wäre. Eine Ganzzahl in einen String oder einen String in eine Zahl zu verwandeln, musst du ausdrücklich verlangen:
Ergibt eine Umwandlung keinen Sinn — int("hello") zum Beispiel — wirft Python ValueError und verrät, was du ihm gegeben hast. Fehler erklärt, beheben und weitermachen.
Einen Typ prüfen
Zwei Werkzeuge lohnen sich zu kennen:
type() ist gut für einen kurzen Blick in der REPL. isinstance() nutzt du in echtem Code, weil es mit Vererbung gut umgeht und gegen mehrere Typen auf einmal prüfen kann.
Eine kleine Erkundungsübung
Führe den Block unten erst unverändert aus, dann ändere ein paar Werte und schau, welche Typen herauskommen:
for musst du noch nicht verstehen — dazu kommen wir —, aber das gibt dir auf einen Blick ein Gefühl für die eingebauten Typen.
Wähl den Typ, der zu den Daten passt
Du musst dir nicht jeden Typ sofort merken. Du musst nur einen erkennen, wenn du ihn siehst, und beim Anlegen von Daten den richtigen wählen. „Ist das fix oder veränderbar? Eindeutig oder nicht? Nachschlagen per Schlüssel oder per Position?“ Diese vier Fragen wählen in neunzig Prozent der Fälle den Sammlungstyp.
Als Nächstes: Strings im Detail, weil sie der eine Datentyp sind, den du in fast jedem Programm anfasst.
Häufig gestellte Fragen
Welche sind die wichtigsten Datentypen in Python?
Zahlen (int und float), Strings (str), Booleans (bool), None und vier Sammlungstypen — list, tuple, set und dict. Alles andere im Python-Code ist aus diesen plus einer Handvoll weiterer gebaut (bytes, complex, frozenset).
Wie prüfe ich den Typ eines Werts in Python?
Pack ihn in type(): type(42) liefert <class 'int'>, type('hi') liefert <class 'str'>. Für eine echte True/False-Prüfung nimm isinstance(value, int) — das ist flexibler, weil es auch Unterklassen akzeptiert.
Ist Python statisch oder dynamisch typisiert?
Dynamisch typisiert. Eine Variable kann auf einen beliebigen Typ zeigen, und dieselbe Variable kann ihren Typ über die Laufzeit hinweg ändern. Das ist anders als in Sprachen wie Java oder C++, wo du den Typ einer Variablen einmal deklarierst und er sich nicht mehr ändern kann.