Bis jetzt haben wir einfache Variablenzuweisungen vorgenommen, indem einer Variablen ein bestimmter Wert zugewiesen wurde, z. B. a = 3 oder text=”hallo”. Aber woher weiß Python eigentlich, um welchen Datentyp es sich dabei handelt? Warum können Rechenoperationen auf der Variable a und Textoperationen auf der Variablen text ausgeführt werden ohne das explizit gesagt wird, dass es sich bei a um einen Integer, bei text um einen String handelt? Dieses Tutorial beleuchtet den Umgang mit Variablen in Python. Wie wir sehen werden, dass dieser recht dynamisch ist …
Challenge
Erstelle drei Variablen mit den folgenden Wertzuweisungen: “Herbert G.” mit “Tumult”, “Konto” mit 20000 und “BWP für Europa” mit 25,5%.
Gut zu wissen…
In vielen Programmiersprachen wird der Datentyp einer Variablen gleich zu Beginn festgelegt. Im folgenden C Beispiel wird die Variable eine_zahl als Integer deklariert und ihr wird der Wert 3 zugewiesen.
1 |
int eine_zahl = 3; |
Es ist später nicht mehr möglich, den Datentyp zu ändern. Sollte man sich für einen neuen Datentyp entscheiden muss eine neue Variable mit geändertem Namen angelegt werden. Diese Vorgehensweise ist die statischen Typisierung (static Typing) .
In Python werden Variablen nicht deklariert. Ihnen wird dynamisch, zur Laufzeit, ein Datentyp zugewiesen. Man nennt dies dynamische Typisierung (dynamic Typing).
1 2 3 4 5 6 7 |
# Der Variablen x wird der Wert 11 zugewiesen. Der Datentyp (int) ist # hier implizit x = 11 # Der Datentyp ändert sich in float x = 11 + 0.1 # und schließlich in String x = "Hallo Welt" |
Im obigen Beispiel wandelt Python automatisch aufgrund der Rechenoperation mit einem Float Wert den Datentyp der Variable x in Float um und allokiert damit mehr Speicherplatz. Die Speicherorte für die Variablenbelegungen können deshalb wechseln.
Die Flexibilität von Python kann aber auch zu Problemen führen, besonders wenn eine Menge Code im Spiel ist.
1 2 3 |
# im Code irgendwo vorher wurde x mit einem Text initialisiert... y = x + 1 # führt zu der Fehlermeldung: Type Error: Must be str, not int |
Klar, eine Rechenoperation zwischen str und int Werten ist nicht erlaubt. Auch um solche Fehler zu vermeiden, gibt es seit Python 3.6 die Möglichkeit, Variablen in Python mit Typinformationen zu versehen. Heise hat darüber einen interessanten Artikel geschrieben (hier).
Für die Benennung von Variablen gibt es in Python ein paar einfache Regeln:
- Ein Variablenname muss mit einem Buchstaben oder dem Unterstrich beginnen
- Ein Variablenname kann nicht mit einer Zahl anfangen.
- Variablennamen können alphanumerische Zeichen und den Unterstrich enthalten
- Groß- und Kleinschreibung ist zu berücksichtigen.
Für den Spickzettel…
dynamische Typisierung | Erst zur Laufzeit wird ein Datentyp zugewiesen. |
statische Typisierung | Typinformationen werden bei der Übersetzung des Programs vom Compiler hinzugefügt. |