Ich bin auf der Suche nach Mindest- und Höchstwerten für Ganzzahlen in Python. In Java haben wir z. B. Integer.MIN_VALUE
und Integer.MAX_VALUE
. Gibt es so etwas auch in Python?
In Python 3 trifft diese Frage nicht zu. Der einfache Typ int
ist unbeschränkt.
Sie könnten jedoch tatsächlich nach der Wortgröße der Maschine suchen. Diese ist in Python 3 immer noch als sys.maxsize
verfügbar.
In Python 2 ist der Maximalwert für einfache int
-Werte als sys.maxint
verfügbar:
>>> sys.maxint
9223372036854775807
Sie können den Minimalwert mit -sys.maxint - 1
berechnen, wie [hier] gezeigt (https://docs.python.org/2/library/sys.html#sys.maxint).
Python wechselt nahtlos von einfachen zu langen Ganzzahlen, sobald Sie diesen Wert überschreiten. In den meisten Fällen werden Sie diesen Wert also nicht kennen müssen.
Die Konstante sys.maxint wurde ab Python 3.0 entfernt, verwenden Sie stattdessen sys.maxsize.
Ganzzahlen
- PEP 237: Im Wesentlichen wurde long in int umbenannt. Das heißt, es gibt nur einen eingebauten Integraltyp namens int; aber er verhält sich größtenteils wie der alten long-Typ.
- PEP 238: Ein Ausdruck wie 1/2 gibt einen Float zurück. Verwenden Sie 1//2, um das Trunkierungsverhalten zu erhalten. (Die letztere Syntax existiert schon seit Jahren, zumindest mindestens seit Python 2.2.)
- Die Konstante sys.maxint wurde entfernt, da es keine Grenze mehr für den Wert von Ganzzahlen gibt. Allerdings kann sys.maxsize als eine Ganzzahl verwendet werden, die größer als jeder praktische Listen- oder String-Index ist. Sie entspricht der der "natürlichen" Integer-Größe der Implementierung und ist typischerweise dasselbe wie sys.maxint in früheren Versionen auf der gleichen Plattform (unter der Annahme, dass die gleichen Build-Optionen).
- Das repr() einer langen Ganzzahl schließt das nachgestellte L nicht mehr ein, so dass Code, der dieses Zeichen bedingungslos entfernt, stattdessen die letzte Stelle ab. (Verwenden Sie stattdessen str().)
- Oktal-Literale haben nicht mehr die Form 0720; verwenden Sie stattdessen 0o720.
In Python wechseln Ganzzahlen automatisch von einer int
-Darstellung mit fester Größe in eine Darstellung mit variabler Breite long
, sobald Sie den Wert sys.maxint
übergeben, der je nach Plattform entweder 231 - 1 oder 263 - 1 ist. Beachten Sie das "L", das hier angehängt wird:
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
Aus dem Python-Handbuch:
Zahlen werden durch numerische Literale oder als Ergebnis von eingebauten Funktionen und Operatoren erzeugt. Ungeschmückte Ganzzahl-Literale (einschließlich Binär-, Hex- und Oktalzahlen) ergeben einfache Ganzzahlen, es sei denn, der Wert, den sie bezeichnen, ist zu groß, um als einfache Ganzzahl dargestellt zu werden; in diesem Fall ergeben sie eine lange Ganzzahl. Ganzzahlige Literale mit dem Suffix
'L'
oder'l'
ergeben lange Ganzzahlen ('L'
wird bevorzugt, weil1l
zu sehr nach elf aussieht!).
Python gibt sich große Mühe, so zu tun, als ob seine ganzen Zahlen mathematische ganze Zahlen wären und nicht begrenzt sind. Es kann zum Beispiel mit Leichtigkeit ein googol berechnen:
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L