Die Python-Funktion format(value, format_spec) wendet einen Format-Spezifizierer auf einen Einzelwert an und liefert einen formatierten String back. Sie nutzt dieselbe Mini-Sprache wie f-Strings (f"{x:.2f}") und die str.format()-Methode. format() ist die richtige Wahl, wenn der Spezifizierer dynamisch ist oder wenn nur ein einziger Wert formatiert werden soll.
Einleitung
format() ist Pythons formaler Eingang zur Format-Mini-Sprache — der gleichen, die hinter f-Strings (f"{x:.2f}") und der Methode str.format() steht. Während f-Strings und str.format() mehrere Werte in einen Template-String einsetzen, verarbeitet format() genau einen Wert mit einem einzelnen Spezifizierer.
Der größte Mehrwert: dynamische Spezifizierer. Wenn das Format-Detail (Anzahl Nachkommastellen, Padding-Länge, Basis) erst zur Laufzeit feststeht, ist format() sauberer als f-Strings mit verschachteltem Format.
Intern ruft format(value, spec) die Methode value.__format__(spec) auf — Custom-Klassen können so eigene Format-Spezifizierer definieren.
Syntax
format(value, format_spec="")value Beliebiger Wert. Ruft intern dessen __format__(format_spec) auf.
format_spec (Optional) Format-Spezifizierer als String, z. B. ".2f", "08d", ">10". Default: leerer String → identisch zu str(value).
Format-Mini-Sprache (häufigste Spezifizierer)
| Spec | Bedeutung |
|---|---|
.2f | Float mit 2 Nachkommastellen |
, | Tausender-Trenner (,) |
_ | Tausender-Trenner (_) |
08d | Integer, mit Nullen auf 8 Stellen aufgefüllt |
b, o, x, X | Binär, Oktal, Hex (klein/groß) |
% | Prozent (×100, mit %-Zeichen) |
e, E | Wissenschaftliche Notation |
>10 | Rechtsbündig auf 10 Zeichen |
<10 | Linksbündig auf 10 Zeichen |
^10 | Zentriert auf 10 Zeichen |
Beispiele
Zahlen formatieren
print(format(3.14159, ".2f"))
print(format(1234567, ","))
print(format(255, "08b"))
print(format(255, "X"))
print(format(0.875, ".1%"))3.14
1,234,567
11111111
FF
87.5%Padding und Ausrichtung
for label in ["A", "BB", "CCC"]:
print(f"|{format(label, '<5')}|{format(label, '^5')}|{format(label, '>5')}|")|A | A | A|
|BB | BB | BB|
|CCC | CCC | CCC|Dynamischer Spezifizierer
value = 42.567
for prec in range(4):
print(format(value, f".{prec}f"))43
42.6
42.57
42.567Praktische Beispiele
Tabelle mit ausgerichteten Spalten
products = [("Apfel", 0.49), ("Brot", 2.30), ("Käse", 12.95)]
for name, preis in products:
print(f"{format(name, '<10')} {format(preis, '>8.2f')} €")Apfel 0.49 €
Brot 2.30 €
Käse 12.95 €Custom-Klasse mit eigenem Format-Spezifizierer
class Temperature:
def __init__(self, celsius):
self.c = celsius
def __format__(self, spec):
if spec == "F":
return f"{self.c * 9 / 5 + 32:.1f} °F"
if spec == "K":
return f"{self.c + 273.15:.2f} K"
return f"{self.c} °C"
t = Temperature(20)
print(format(t))
print(format(t, "F"))
print(format(t, "K"))20 °C
68.0 °F
293.15 KDynamisches Format aus Konfiguration
config = {"prec": 3, "sep": ","}
value = 1234567.89123
spec = f"{config['sep']}.{config['prec']}f"
print(format(value, spec))1,234,567.891Praktische Hinweise
- f-Strings sind in 99 % der Fälle die bessere Wahl:
f"{x:.2f}"ist kürzer und lesbarer alsformat(x, ".2f"). format()als Funktion glänzt bei dynamischen Spezifizierern oder beim Übergeben als Callback.- Custom-Klassen:
__format__(self, spec)definiert das eigene Format-Verhalten. - Verwandte API:
str.format()für Templates mit mehreren Platzhaltern,f-Stringsfür Inline-Formatierung.