Zum Inhalt

Variablen

Im Hauptspeicher von Rechnern können durch Programme beliebige Daten abgelegt werden. Damit diese Daten im Programm wieder abgefragt werden können, werden Variablen verwendet. Mit Variablen kann in einem Programm ein Wert unter einem definierten Namen abgelegt werden.

Zuweisungsoperation

Neue Variablen können im Programm durch eine Zuweisungoperation eingeführt werden. Im folgenden Beispiel wird die Variable a mit dem Wert 5 deklariert:

a = 5

Bei einer Zuweisungsoperation findet sich auf der linken Seite immer der Variablenname und auf der rechten Seite der Wert der zugewiesen werden soll. Auf der rechten Seite kann jedoch auch ein Ausdruck stehen. Der Variable wird in diesem Falls das Ergebnis des Ausdrucks zugewiesen. Im folgenden Beispiel wird der Variable a das Ergebnis des Ausdrucks 5 + 10 * 2 zugewiesen:

a = 5 + 10 * 2

Der Inhalt einer Variable ist dabei nicht statisch zu verstehen. Im Verlauf eines Programms kann eine Variable auch neue Werte annehmen. Im folgenden wird die Variable a mit dem Wert 10 initialisiert und gleich darauf wird ihr der Wert 5 zugewiesen:

a = 10  # Initialisierung und erste Wertzuweisung
a = 5   # Wertveränderung

Verständnisfrage

Öffnen Sie eine online Programmierumgebung oder die Python Repl und deklarieren und verändern Sie einige Variablen. Versuchen Sie unterschiedliche Variablennamen zu verwenden, fallen Ihnen Regeln auf, welche für die Variablennamen zu beachten sind?

Variablen in Ausdrücken

Variablen sind als Platzhalter für Werte zu verstehen. Erst dadurch können sie ihren vollen Nutzen entfalten. In einem Ausdruck kann anstelle einer Zahl eine Variable stehen. Der Rechner würde für die Auswertung des Ausdrucks den gespeicherten Wert der Variable verwenden. Im folgenden Beispiel wird die Variable a und die Variable b eingeführt. Der Inhalt der Variable b setzt sich aus der Auswertung eines Ausdrucks zusammen, welcher die Variable a nutzt:

a = 10
b = 2 * a + 10

Im obigen Beispiel würde die Variable b den Wert 30 enthalten. Es ist auch möglich, dass sich eine bereits eingeführte Variable, in einem wertverändernden Ausdruck selbst enthält. Im folgenden Beispiel wird die Variable a mit dem Wert 10 initialisiert, im nächsten Schritt wird der Inhalt der Variable a durch einen Ausdruck verändert, welcher die Variable a selbst enthält.

a = 10
a = a + 20

Es wurde bereits erwähnt, dass bei einer Zuweisungsoperation erst die rechte Seite ausgeführt wird. Somit enthält die Variable a im Ausdruck der 2. Zeile den Wert 10. Nach der Auswertung des Ausdrucks (auf der rechten Seite) wird der Variable a der Wert 30 zugewiesen.

Variablennamen

Variablen sollten einen sprechenden und sinnvollen Namen bekommen. Der Quellcode von populäre Programmen, wie zum Beispiel des Linux-Kernel oder Bitcoin, wird häufig von Millionen Entwickler:innen gelesen und gute Variablennamen können das Verständnis des Quellcodes positiv beeinflussen. Computer, welche Programme nur ausführen, ist es aber vollkommen egal wie eine Variable bezeichnet wird.

Für Variablennamen in Python gibt es einige Regeln die zu beachten sind:

  • Ein Variablenname darf mit einem alphabetischen Zeichen (a-z, A-Z) oder einem Unterstrich beginnen.
  • Der Variablenname darf ab der zweiten Stelle alphanumerische Zeichen (a-z, A-Z, 0-9) bzw. den Unterstrich enthalten.
  • Es gibt einige reservierte Wörter (zB if, for, while, ...), welche nicht als Variablennamen verwendet werden können, da sie bereits eine andere Bedeutung haben.

Im folgenden finden sich einige gültige Beispiele für Variablennamen:

_var1 = "sometext"
BlaBla9 = 123
Komma_Zahl = 32.32
Truthy = True
Nothing = None

PEP8 Styleguide für Variablennamen

Die Python Software Foundation entwickelt als Community sog. Python Enhancement Proposals (PEPs), um die Programmiersprache weiterzuentwickeln. Es wurde unter PEP8 ein Styleguide für Python Quellcode erstellt. Folgend eine kurze Zusammenfassung für die Vorschläge um gute Variablennamen zu erzeugen:

  • Ein Variablenname sollte aus einem Zeichen, einem Wort oder mehreren Wörtern bestehen.
  • Falls mehrere Wörter als Variablenname verwendet werden, sollten diese mit Unterstrich getrennt werden (_).
  • Es sollten nur Kleinbuchstaben verwendet werden.

Zusammengefasst sollte für Python der sog. Snake Case verwendet werden um Variablennamen zu bezeichnen.

Datentyp

Eine Variable besitzt immer einen entsprechenden Datentyp. Der Datentyp einer Variable wird implizit mit der Zuweisungsoperation festgelegt. In Python gibt es unterschiedliche vordefinierte Datentypen, wie zum Beispiel int, float, str, bool, etc. Mit Klassen können auch eigene Datentypen definiert werden.

Mit der Built-in Funktion type kann der Datentyp einer Variable abgefragt werden. Im folgenden werden die beiden Variablen a und b eingeführt und die Funktion type wird auf diese angewendet. Das Ergebnis zeigt jeweils den entsprechenden Datentyp an:

a = 123
type(a)  # <class 'int'>

b = 2.5
type(b)  # <class 'float'>

Dynamische vs statische Typisierung

Der Datentyp einer Variable wird in Python immer zur Laufzeit des Programms mit der Zuweisungsoperation festgelegt. Der Datentyp einer Variable ist dabei dynamisch und kann sich jenachdem welcher Wert zugwiesen wurde verändern. Dieses Verhalten nennt man eine dynamische Typisierung, welche vorallem bei sog. Skriptsprachen wie Python, PHP oder JavaScript vorkommt. Kompilierte Programmiersprachen wie etwa Java, C oder Swift folgen der statischen Typisierung. In einer kompilierten Programmiersprache kann sich der Datentyp einer Variable während der Laufzeit nicht verändern.

Der Datentyp einer Variable definiert implizit auch, welche Art von Operationen mit einer Variable durchgeführt werden können. Arithmetische Operationen machen generell nur mit Zahlen Sinn. Es würde keinen Sinn ergeben 2 Zeichenketten zu dividieren und deshalb würde eine solche Operation auch zu einem Fehler führen.

Verständnisfrage

Schauen Sie sich die Liste der verfügbaren Python Operatoren an. Gibt es aus Ihrer Sicht dort Operatoren, welche für Zahlen keinen Sinn ergeben? Testen Sie in einer online Programmierumgebung oder der Python Repl, ob Ihre Vermutungen korrekt sind?

Kombinierte Operatoren

In Programmiersprachen gibt es sogenannten Syntactic Sugar, welcher es ermöglicht komplexeren Programmcode einfacher zusammenzufassen. Ein Beispiel dafür ist die Kombination von arithmentischen Operationen mit der Zuweisungsoperation. Im folgenden finden sich 2 äquivalente Programme. Im zweiten Programm wurde der kombinierte Operator für Zuweisung und Addition += verwendet.

a = 3
a = a + 5
a = 3
a += 5

Generell lassen die meisten arithmetischen Operationen mit dem Zuweisungsoperator für Zahlen kombinieren (zB *=, -=, /=, ...).