Die Python-Funktion int() erzeugt eine Ganzzahl aus verschiedenen Eingaben: Strings (mit optionaler Basis 2 bis 36), Floats (Nachkommastellen werden abgeschnitten Richtung Null), Booleans und Objekten mit __int__() oder __index__(). Ohne Argument liefert int() 0. In Python sind int-Objekte beliebig groß — anders als in C oder Java gibt es keine Größenbegrenzung.
Einleitung
int() ist sowohl der Konstruktor des Datentyps int als auch eine flexible Konvertierungsfunktion. Drei Hauptanwendungen prägen den Alltag:
- String → Zahl:
int("42")parst eine ASCII-Dezimaldarstellung. Mitbase=(2–36) auch Binär, Oktal, Hex und beliebige andere Basen. - Float → int: Schneidet Richtung Null ab (
int(3.9) == 3,int(-3.9) == -3) — anders alsmath.floor(), das Richtung negativ unendlich rundet. - Custom-Objekt: Klassen mit
__int__()oder__index__()werden korrekt konvertiert.
int selbst ist in Python arbitrary precision: es gibt keinen Overflow. Operationen wie 2 ** 1_000 liefern korrekte Ergebnisse, dauern aber bei sehr großen Zahlen entsprechend.
Syntax
int() # → 0
int(x) # x: int, float oder Objekt mit __int__/__index__
int(string, base=10) # base 2..36, oder 0 für Car-Erkennung via Präfixx Eine Zahl (int, float), ein String oder ein Objekt mit __int__()/__index__().
base (Optional, Default 10) Basis für String-Eingaben — von 2 bis 36. Mit base=0 wird die Basis am Präfix erkannt (0b, 0o, 0x).
Rückgabewert
Eine int-Instanz. Bei nicht parsierbarem String: ValueError. Bei nicht unterstütztem Typ: TypeError.
Beispiele
Aus String und Float
print(int("42"))
print(int(" -7 ")) # Whitespace ist erlaubt
print(int(3.9)) # schneidet Richtung 0 ab
print(int(-3.9))
print(int(True), int(False))42
-7
3
-3
1 0Mit Basis
print(int("ff", 16)) # Hex
print(int("1010", 2)) # Binär
print(int("777", 8)) # Oktal
# base=0 erkennt Präfixe automatisch
print(int("0xff", 0))
print(int("0b1010", 0))255
10
511
255
10Underscores als Lesehilfe
print(int("1_000_000"))
print(int("0xff_ff", 16))1000000
65535Praktische Beispiele
Sichere Konvertierung mit Default
def to_int(s, default=0):
try:
return int(str(s).strip())
except (ValueError, TypeError):
return default
print(to_int("42"))
print(to_int("abc", default=-1))
print(to_int(None, default=-1))42
-1
-1Hex-Farbcode parsen
hex_farbe = "#0a8ea1"
value = int(hex_farbe.lstrip("#"), 16)
print(f"Wert: {value}, Hex: {hex(value)}")Wert: 691873, Hex: 0xa8ea1Float korrekt runden statt abschneiden
x = 3.7
print(int(x)) # 3 — schneidet ab
print(round(x)) # 4 — kaufmännisch gerundet
import math
print(math.floor(x)) # 3 — nach unten
print(math.ceil(x)) # 4 — nach oben3
4
3
4Praktische Hinweise
int()schneidet Richtung Null ab, nicht „nach unten". Für mathematisches Abrundenmath.floor(), für kaufmännischesround().- Beliebig große Zahlen sind ohne Overflow möglich —
intist in Python „big int". - Locale ignoriert:
int()versteht nur ASCII-Ziffern, nicht z. B."1.000"(Tausender-Point). Vorher mit.replace(".", "")aufbereiten. - Boolean ist int:
True == 1,False == 0.int(True) → 1. - Verwandte Funktionen:
float(),bin(),hex(),oct(),str().