14. Datentypen (Grundlagen)#
Wie in Abschnitt Repräsentation beschrieben, befinden sich im Speicher des (digitalen) Computers ausschließlich Bits. Sie können sich den Speicher als eine lange lange Liste von Bits vorstellen. Diese Bits können nur einen von zwei Zuständen (0 und 1) annehmen. Dennoch verarbeiten Computer Zahlen, Text, Bilder und mehr.
Diese „Magie“ geschieht durch die Wahl und Implementierung einer Interpretation. Unterschiedliche Interpretationen ermöglichen es, Bits und Byte als Zahlen, Text, Bilder usw. zu verarbeiten.
Im Abschnitt Variablen haben wir von einer Variable als Tupel von Wert und Speicheradresse gesprochen. Die Variable „kennt“ die Speicheradresse an welche der Wert im Speicher steht. Soweit so gut, woher aber weiß der Interpreter ob es sich bei der Folge von Bits um eine Zahl oder um etwas anderes handelt?
Weisen wir der Variablen char
den Wert 'a'
zu
char = 'a'
char
'a'
so wird im Speicher irgendwo der Wert als binärer ASCII-Code stehen:
Würde man diese Bitfolge als ganze Zahl interpretieren wäre dies gleich
Warum gibt uns der Interpreter aber 'a'
und nicht 97
aus?
Und weshalb kommt es bei folgender Addition
x = 3
char = 'a'
x + char
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[2], line 3
1 x = 3
2 char = 'a'
----> 3 x + char
TypeError: unsupported operand type(s) for +: 'int' and 'str'
zu einem Fehler?
Die kurze Antwort lautet: Wegen der Datentypen der Variablen x
bzw. char
.
print(f'type of x: {type(x)}')
print(f'type of char: {type(char)}')
type of x: <class 'int'>
type of char: <class 'str'>
Der Datentyp der Variablen char
ist str
(Zeichenkette).
Diese Information erhält der Interpreter und interpretiert deshalb die Bitfolge im Speicher als Zeichenkette.
Die +
-Operation ist für die Kombination von Datentypen int
und str
nicht definiert.
Deshalb kommt es zu einem Fehler.
Das ist allerdings eine unbefriedigende Erklärung, denn wir wissen noch nicht wie Datentypen realisiert werden. Wie ist der Zusammenhang zwischen den Programmiersprachen, welche alle auf Datentypen basieren, und den Übersetzern oder Interpretern und der Computerhardware?
In diesem und nächstem Kapitel unternehmen wir den Versuch Ihnen das Konzept der Datentypen zu vermitteln.
Dies beinhaltet Theorie und Praxis.
Um in Python
mit den Datentypen praktisch umgehen zu können, reicht es vorerst dieses Kapitel gut zu durchdringen.
Im nächsten Kapitel, Datentypen (Fortsetzung), werden wir hingegen genauer untersuchen, weshalb es Datentypen gibt und welchen Einfluss diese im Detail haben.
Möchten Sie also ein tieferes Verständnis erhalten wie Datentypen mit dem Ablauf eines Programms und der Computerhardware zusammenhängen, lohnt sich der Blick in das nächste Kapitel Datentypen (Fortsetzung).
Wir versuchen folgende Fragen zu beantworten:
Grundlagen
Was kann ich in
Python
mit einer Variable eines bestimmten Typs anfangen? Abschnitt 4.1 bis 4.9.Welche Typisierung verwendet
Python
? Abschnitt 4.2 Pythons Typisierung.
Fortsetzung
Was ist der Unterschied zwischen statischer und dynamischer Typisierung? Abschnitt 5.1 Dynamische und statische Typisierung.
Weshalb gibt es überhaupt Datentypen? Abschnitt 5.2 Existenzberechtigung.
Was passiert bei einer Änderung des Datentyps einer Variablen? Abschnitt 5.3 Interpretationswechsel.
Welche Datentypen gibt es? Abschnitt 5.4 Arten von Datentypen.
Warum gibt es in
Python
keine primitiven Datentypen? Abschnitt 5.5 Primitive Datentypen in Python?).