Python3 – Teil 2 Variablen

Erwartete Lesezeit: 4 minuten

Was wäre eine Programmiersprache ohne Variablen. Ein Traum , aber ohne geht es ja nicht.
Python ist aber in dieser Sicht recht pflegeleicht. Bis Python 3.5 brauchte man keine Typangaben machen. Ab 3.6 kann man diese wie in anderen Sprachen Nutzen. Einige Pythonianer sind begeistert von dieser Neuerung , viele halten dieses aber für komplett unnötig. Wir schauen uns hier beide Varianten an.

Fangen wir mit den normalen Variablen anhand des Hallo Welt Beispiel an.

x = 'Hallo Welt'
print(x)

Der Interpreter erkennt, das x ein String sein soll und gibt diesen über den print Befehl beim Ausführen des Codes aus.

Versuchen wir das ganze jetzt mal mit einem Integer :

y = 1 
print(y)

Der Interpreter erkennt , das y ein Integer ist und gibt die 1 aus. Aber hat er wirklich ein Integer erkannt doch einen String. Wenn wir die Anwendung im Debugmodus starten sehen wir das Ergebnis:

Python3 – Teil 2 Variablen

Spätestens wenn wir versuchen die 2 Variablen zu Konkatenieren, hätten wir es beim ausführen gemerkt. Konkatenieren funktioniert nur mit Strings. Wenn wir versuchen , dass folgende Beispiel auszuführen, bekommen wir eine Fehlermeldung :

x = "Die Zahl ist "
y = 42

print(x + y)

Nach der Ausführung kommt die folgende Fehlermeldung:

TypeError: can only concatenate str (not "int") to str

Das heißt , eine der beiden Variablen ist kein String. Um die Ausgabe zu ermöglichen , müssen wir die Variablen in einen String umwandeln. Da wir wissen , dass y ein Integer ist , müssen wir auch nur diese umwandeln. Dieses machen wir über den Befehl str(<variable>).

x = "Die Zahl ist "
y = 42

print(x + str(y))

Und schon klappt die Ausgabe.
Möchte man ohne Debuggen den Typ einer Variablen ermitteln , kann man dieses über den Befehl type(<variable>) ermitteln.

x = "Die Zahl ist "
y = 42
print("x=" + str(type(x)))
print("y=" + str(type(y)))

Ergebnis:

x=<class 'str'>
y=<class 'int'>

Schauen wir uns nun die Neuerung mit typsicheren Variablen an. Seit Version 3.6 können Entwickler Variablen den Typ mitgeben. Bei der Ausführung spielt dieses allerdings aktuell keine Rolle. Nur wenn man den Sourcecode mit einem TypeChecker analysieren lässt, bringt dieses ein nützliches Ergebnis.

Neben dieser Analyse macht es natürlich den Entwicklern von größeren Projekten es einfacher den Code zu verstehen und zu wissen wie der Code tickt.
Bauen wir die TypeHints in unsere vorheriges Beispiel ein :

x: str = "Die Zahl ist "
y: int = 42
print(x + str(y))

Um die Typen der Variablen nun zu checken, müssen wir uns noch einen TypeChecker installieren. Wir nutzen hier mal MyPy, welcher über das Terminal mittels pip leicht zu installieren ist.

pip install mypy

Nach der Installation könne wir den check im Terminal über den Befehl

>mypy <filename>

starten. In unserem Beispiel kommt die Meldung , dass keine Fehler gefunden wurden. Ändern wir jetzt testweise für den Wert x den Typ von str in int um kommt die Meldung:

error: Incompatible types in assignment (expression has type "str", variable has type "int")

Für größere Projekte also sehr sinnvoll. Bei kleineren Scripten kann man sich die Arbeit sparen.

Im nächsten Beitrag schauen wir uns Listen, Tupel und Sets an.