Skip to content

Wert-Datentypen

Programme verarbeiten strukturierte Informationen: es geht also nicht nur darum, was genau dargestellt wird, sondern auch, auf welche Weise die Information abgelegt ist. Wir können entweder sagen "nächsten Montag" oder ein konkretes Datum nennen. Die Information ist identisch, aber je nach Kontext ist das eine ist leichter zu verarbeiten als das andere.

Python bietet im Grunde sehr ähnliche Datentypen zu anderen Programmiersprachen. Hier behandeln wir zunächst die wichtigsten eingebauten Datentypen. Man kann selbst welche definieren, wie wir später feststellen werden.

  • int (Integer) speichert eine Ganzzahl ohne Einschränkungen im Wertebereich ab (z.B. 42)
  • float (Float) speichert eine Dezimalzahl in (üblicher) doppelter Genauigkeit ab (z.B. 1.2)
  • str (String) speichert eine Zeichenkette (z.B. "ein Wort"); in Python immer in einfachen oder doppelten Anführungsstrichen
  • bool (Boolean) speichert einen Wahrheitsausdruck (True oder False)
  • bytes (Bytes) enthält eine Byte-Folge, also Binärdaten (z.B. ein Bild oder Messdaten)

Datentypen werden nicht deklariert, sondern sie ergeben sich durch implizite Verwendung. Das nennt man auch schwache Typisierung oder "duck typing": solange sich ein Objekt wie eine Zahl verhält, ist es unerheblich, ob es tatsächlich eine Zahl ist.

Jeder der Datentypen hat eigene Funktionen, die auf diesem Datentyp arbeiten. Dabei können z.B. Zahlenfunktionen nur auf Zahlendatentypen angewendet werden, nicht aber auf Zeichenketten. So ist 1+1 oder 1+1.2 erlaubt, jedoch 1+"1" (also die Summe aus Zahl und Zeichenkette) nicht gestattet und wird mit einem Fehler, dem TypeError quittiert. Eine implizite Konversion wird nur von Ganzzahlen zu Dezimalzahlen (nicht aber umgekehrt) durchgeführt, sowie zwischen Booleans und Ganzzahlen (in beiden Richtungen). Generell neigen implizite Konvertierungen von Datentypen zu Nebeneffekten, die nicht immer klar verstanden werden und damit lange unerkannte Fehler erzeugen. Explizite Konvertierungen sind einfach möglich: int("2") ergibt 2 und str(2) ergibt "2".

Übungsfragen

  1. Welche der folgenden Ausdrücke ist zulässig?

    • 42 - 7
    • 1 * True
    • 1.1 * True
    • 1.1 * "True"
  2. Natürliche Zahlen werden als int dargestellt. Wie werden rationale Zahlen dargestellt?

  3. Welche der folgenden Konvertierungen schlagen fehl und warum?

    • str(1.2)
    • int(1,3)
    • float(2)