Buchgenerator (deaktivieren)

Programmieren: Paradigmen: Variablen

Aus Wikibooks

Wechseln zu: Navigation, Suche

Es gibt vieles über das Konzept der Variablen zu schreiben. Der untenstehende Extrakt ist aus dem Buch Python unter Linux übernommen, s. hier.

[Bearbeiten] Zahlentypen

Es gibt in Python mehrere Zahlentypen. Normalerweise muss man sich beim Programmieren nicht darum kümmern, weil Python automatisch den richtigen Typ auswählt. In einigen Ausnahmefällen tun die Programme jedoch nicht das Erwartete, wenn die falschen Typen aufeinandertreffen. Ein Beispiel soll das illustrieren:

#!/usr/bin/python
 
#seltsame Ergebnisse
print "1 / 2 = " + str(1/2)
print "1 / 2.0 = " + str(1/2.0)
print "1.0 / 2 = " + str(1.0/2)
Align=none Ausgabe

user@localhost:~$ ./types.py
1 / 2 = 0
1 / 2.0 = 0.5
1.0 / 2 = 0.5

Das angedeutete Phänomen, dass 1/2=0 sein soll, hängt mit den Typen der Zahlen zusammen. Python kennt (wie viele andere Sprachen) ganze Zahlen mit festem Wertebereich (int) und Fließkommazahlen (float). Zusätzlich gibt es in Python noch komplexe Zahlen (complex) und beliebig lange ganze Zahlen (long). Die Rechenoperationen bleiben normalerweise in ihrem jeweiligen Typ, d.h. eine Division von zwei ints liefert wieder einen int - selbst wenn das "korrekte" Ergebnis eine Kommazahl wäre. Um diesen Fallstrick zu umgehen, muss eine der beiden Zahlen durch Anhängen von ".0" in ein float umgewandelt werden. Das Ergebnis ist dann vom allgemeineren Typ float. Ab Python 2.?? gibt es den zusätzlichen Operator //, der diese Umwandlung selbstständig vornimmt, wenn sie benötigt wird.

Warum rechnet man dann nicht alles in float? Der Grund für die Benutzung von int ist die höhere Geschwindigkeit in der Verarbeitung und (paradoxerweise) die bessere Genauigkeit - ganze Zahlen haben keine Rundungsfehler. Bei sehr großen Zahlen muss man die Geschwindigkeit gegen die Genauigkeit abwägen - die Verarbeitung von Fließkommazahlen ist im Prozessor etwas schneller als die von long integers. Dass das ganze aber eine theoretische Diskussion für weit fortgeschrittene Anwendungen ist, zeigen zwei Beispiele:

  • beim Aufsummieren von 100 Millionen float-Einsen ist noch kein Rundungsfehler sichtbar.
  • bei einem 64bit-Prozessor wird bis zum Wert 9223372036854775807 mit int gerechnet - danach kommt erst long

Hier wird auch ein interessanter Punkt deutlich: Python passt sich an die Plattform an, auf der es läuft. Das heißt, dass die Datentypen so breit sind, wie es auf dem Prozessor üblich ist. In der folgenden Tabelle stehen die Wertebereiche der Datentypen auf verschiedenen Plattformen:

Prozessor / Typ int long float complex
16bit -32768 bis 32767 beliebig
32bit -2147483648 bis 2147483647 beliebig -1.797693e308 bis -0.248e-323 und 0.25e-323 bis 1.79765e308
64bit -9223372036854775808 bis 9223372036854775807 beliebig wie 32bit
128bit -170141183460469231731687303715884105728
bis 170141183460469231731687303715884105727
beliebig
Persönliche Werkzeuge