# Python/ Variablen

Um mehr mit Python zu unternehmen, als einfach nur Berechnungen durchzuführen, brauchen wir eine Möglichkeit, Werte logisch zu speichern. Dazu nutzen wir Variablen (auf Englisch als "identifier" bezeichnet).

## Wertzuweisung

Um eine Variable zu definieren, müssen wir ihr einen Wert zuweisen. Dies tun wir mit dem Gleichheitszeichen (=):
Der Wert rechts vom Gleichheitszeichen wird dabei der Variable links vom Gleichheitszeichen zugewiesen. In diesem Beispiel haben wir die neue Variabel „radius“ erstellt und ihr den Wert 10 zugewiesen. Den Namen der Variablen können wir frei wählen (innerhalb gewisser Grenzen, mehr dazu unten).
Python akzeptiert unseren Befehl ohne eine Rückmeldung. Aber wir können uns ab jetzt den Wert der Variablen anzeigen lassen, in dem wir ihren Namen eingeben und Enter drücken:
Auf die selbe Art können wir unserem „radius“ jederzeit einen neuen Wert zuweisen:
Das Gleichheitszeichen dient hier als Zuweisungsoperator („weise zu“) und nicht im mathematischen Sinne („ist gleich“). Daher ist folgender Befehl möglich und erlaubt:
Was haben wir hier getan? Wir haben Python gesagt: „Nimm den Wert der Variable radius, verdopple ihn und weise ihn wieder der Variable radius zu“.
Nebenbei, das funktioniert natürlich auch mit den anderen, uns bekannten Operatoren:

## Undefinierte Variablen

Wenn wir versuchen, eine Variable zu nutzen, die wir nicht definiert haben, erhalten wir von Python eine Fehlermeldung:
Erfreulicherweise schlägt uns Python auch gleich den „richtigen“ Namen, nämlich die bestehende Variable vor.
Wie das Beispiel gezeigt hat, unterscheidet Python zwischen Groß- und Kleinschreibung: "radius" und "Radius" sind zwei verschiedene Variablen (ebenso wie "rAdius", "RADius" usw.).

## Variablennamen

Auch wenn Ihnen niemand vorschreiben kann, wie Sie Ihre Variablen benennen, gibt es doch vernünftige Vorschläge. Das Dokument PEP8 der Python-Foundation beschäftigt sich en Detail mit Namenskonventionen, unter anderem mit der für Variablen: „… names should be lowercase, with words separated by underscores as necessary to improve readability. Variable names follow the same convention…“ (wörtlich zitiert aus besagtem Dokument). Das Dokument trifft keine Aussagen über die Länge einer Variable.
Auch wenn Sie eine Vielzahl an verschiedenen Zeichen zur Verfügung haben (s.u.), sollten Sie sich bei der Bennung auf die 26 lateinischen Buchstaben (A-Z), Nummern (0,1,2,3…) und den Unterstrich (_) beschränken.
Exkurs: der Unterstrich, ein gültiger Variablenname, wird vom Interpreter belegt, um im interaktiven Modus das letzte Rechenergebnis zu speichern:
Fassen wir zusammen:
* Namen sollten kleingeschrieben werden (radius statt Radius).
* Einzelne Wörter werden durch den Unterstrich getrennt, falls damit die Lesbarkeit erleichtert wird (mein_haus statt meinhaus).
* In der Praxis werden einzelne Buchstaben wie z.B. „i“ nur für einfaches Zählen eingesetzt.
* Der Name sollte nicht zu lang, aber aussagekräftig sein.
* Der Unterstrich _ alleine sollte im interaktiven Modus nicht genutzt werden
* Am besten nutzen Sie nur die 26 lateinischen Buchstaben (A-Z), Nummern (0,1,2,3…) und den Unterstrich (_) als Zeichen.
Es ist sinnvoll, sich an diese Konventionen zu halten, weil Ihr Code dadurch für andere Programmierer leichter verständlich wird! Das erleichtert die Einarbeitung neuer Leute, sobald Ihnen dieses Buch zu Ihrer eigenen Firma verholfen hat :)

## Exkurs: Encoding

Standardmäßig nutzt Python UTF-8 (Wikipedia: UTF-8). Damit stehen Ihnen ein großer Teil unserer Schriftzeichen direkt zur Verfügung.
Hier einige Beispiele:
Welche Zeichen genau unterstützt werden, hängt vom Interpreter und ggf. dem Betriebssystem ab.

## Variablendeklaration

Falls Sie andere Programmiersprachen kennen, wundern Sie sich vielleicht über die fehlende Variablendeklaration. Wir haben Python nicht mitgeteilt, welchen Datentyp die neue Variable haben soll! Python nimmt uns hier die Arbeit ab und setzt den Typen automatisch. Wie schon im letzten Kapitel gezeigt, können wir uns den Typen anzeigen lassen:
Das heißt aber auch, dass eine Variable nicht auf einen Datentypen festgelegt ist:

## Arbeiten mit Variablen

Unsere neu erstellte Variable bleibt während der gesamten Laufzeit von Python verfügbar (im Buffer).
Hier nutzen wir vorher festgelegte Variable radius um daraus den durchmesser zu berechnen (nach der Formel $d=2\pi \,r$; für dieses Beispiel reicht uns eine Genauigkeit von Pi auf zwei Stellen)
Fangfrage: wenn wir den Wert für radius ändern, ändert sich dann auch der Wert von durchmesser?
Antwort: nein, tut er nicht. Wir erinnern uns: der Variable ist ein Wert zugewiesen, keine Funktion. Die beiden Variablen sind nicht miteinander verknüpft.

## Variablen löschen

Es gibt auch die Möglichkeit, Variablen zu löschen. Dazu nutzen wir die Funktion del, mit dem Namen der Variablen in Klammern:

## Exkurs: Tausender-Trennzeichen

Ein kleines Detail am Rande: Sie können große Zahlen mit dem "_" als Trennzeichen unterteilen, um sie lesbarer zu machen:
Dies funktioniert nur bei der Zuweisung, vereinfacht aber die Eingabe langer Zahlenfolgen.

## Zusammenfasung

* Sie wissen, dass sie mittels Gleichheitszeichen (=) einer Variable einen Wert zuweisen können
* Ihnen ist bewusst, dass Python den Datentyp einer Variablen automatisch festlegt - und zwar jedesmal, wenn wir ihr einen Wert zuweisen
* Sie haben einen Überlick, wie Variablen benannt werden können/sollten
Im nächsten Kapitel geht wir dann endlich von der grauen Theorie zu Praxis über und nutzen Nutzereingaben um etwas Interaktivität ins Spiel zu bringen.