Alle numerischen Datentypen sind unmutable, das bedeutet, nach jeder Veränderung wird eine neue Instanz erzeugt.
Es gibt folgende numerische Datentypen:
Für alle numerischen Datentypen sind die folgenden arithmetischen Operatoren definiert:
+, -, *, /, %, +x, -x, **, //
Die Operatoren % und // sind für complex nicht definiert.
Zusätzlich gibt es sogenannte erweiterte Zuweisungen (augmented assignments):
+=, -=, *=, /=, %=, **=, //=
Ein vergleichender Operator ist ein Operator, der aus zwei Instanzen einen Wahrheitswert berechnet.
Die vergleichenden Operatoren, die für numerische Datentypen definiert sind:
==, !=, <, <=, >, >=
Numerische Datentypen können über die eingebauten Funktionen int, float, bool und complex ineinander umgeformt werden.
Dabei können je nach Umformung Informationen verloren gehen.
Beispiel: int(33.5)
33
Der Datentyp int unterliegt in seinem Wertebereich keinen prinzipiellen Grenzen.
Seit Python 3.6 kann ein Unterstrich verwendet werden, um die Ziffern eines Literals zu gruppieren:
i = 1_000_000
Für den Daentyp int sind einige zusätzliche Operatoren definiert, die sich explizit auf die binäre Darstellung der Zahl beziehen:
&, |, ^, ~, <<, >>
~x = -x-1
Ein Shift um x Stellen nach rechts (>>) entspricht einer ganzzahligen Division durch 2^x, nach links (<<) einer Multiplikation.
Der Datentyp int verfügt über eine Methode bit_length, die die Anzahl Stellen brechnet, die für die
Binärdarstellung der Zahl benötigt werden.
(4345).bit_lengt() --> 13
Zum Speichern einer Gleitkommazahl mit begrenzter Genauigkeit wird der Datentyp float verwendet.
Python unterstützt die Exponentialschreibweise: v = 3.141e-12
Durch ein kleines oder großes e wird die Mantisse (3.141) vom Exponenten (-12) getrennt. Sowohl Mantisse als auch der Exponent
müssen im Dezimalsystem angegeben werden.
Aufgund der Begrenzheit von float können reelle Zahlen nicht unendlich präzise gespeichert werden.
1.1 + 2.2 = 3.3000000000000003
Es gibt für float eine Ober- und eine Untergrenze. Werden diese Grenzen über- bzw. unterschritten, wird die
Zahl als inf bzw. -inf gespeichert, somit können diese Zahlen weiterhin mit anderen Zahlen verglichen werden.
Zwei unendlich große Gleitkommazahlen lassen sich addieren oder multiplizieren, das Ergebnis ist in beiden Fällen wieder inf.
Die Subtraktion bzw. Division zweier unendlicher Zahlen ist nicht sinnvoll, das Ergebnis ist nan (not a number).
Eine Instanz des Datentyp bool kann nur zwei Werte annehmen: True oder False.
not x, x and y, x or y
Ein Operator für ein logisches ausschließendes (exklusives) ODER existiert in Python nicht, lässt sich aber wie folgt nachbilden:
(x or y) and not (x and y)
Mithilfe der Built-in Function bool lassen sich Instanzen eines jeden Basisdatentyps in einen booleschen Wert überführen:
bool([1, 2, 3]) = True
bool("") = False
bool(-7) = True
Für jeden Basisdatentyp ist ein bestimmter Wert als False definiert. Alle davon abweichenden Werte sind True.
False-Wert der Basisdatentypen:
| Basisdatentyp | False-Wert | Beschreibung |
| NoneType | None | der Wert None |
| int | 0 | der numrische Wert Null |
| float | 0.0 | der numrische Wert Null |
| bool | False | der boolesche Wert False |
| complex | 0 + 0j | der numrische Wert Null |
| str | "" | ein leerer String |
| list | [] | eine leere Liste |
| tuple | () | ein leeres Tuple |
| dict | {} | ein leeres Dictionary |
| set | set() | eine leere Menge |
| frozenset | frozenset() | eine leere Menge |
Python wertet logische Ausdrücke grundsätzlich von links nach rechts aus.
Python bricht die Auswertung enes Ausdrucks sofort ab, wenn das Ergebnis feststeht (Lazy Evaluation).
Python gibt den ersten Operanden mit dem Wahrheitswert True zurück.
0 or 1 ==> 1 (und nicht True)
Komplexe Zahlen bestehen aus einem reellen Realteil und einem Imaginärteil:
Beispiel: 3 + 4j
Das j des Imaginärteils steht für: j² = -1
Die Menge der vergleichenden Operatoren ist auf == und != beschränkt.
Der Datentyp complex besitzt zwei Attribute: x.real und x.imag.
Die Methode x.conjugate() liefert die zu x konjugierte komplexe Zahl.