cat posts/f-strings-bis-zum-anschlag.md
f-Strings bis zum Anschlag
Ausrichtung, Präzision, Tausendertrenner, Debug-Syntax und dynamische Formatangaben – so nutzt Du die Format-Mini-Sprache der f-Strings vollständig aus.
In Teil 2 der Python-Serie haben wir f-Strings als bequeme Möglichkeit kennengelernt, Werte in Strings einzubauen:
name = "Karl"
hp = 75
print(f"{name} hat noch {hp} Lebenspunkte.")
Das ist allerdings nur die einfachste Form. f-Strings können Zahlen runden, Spalten ausrichten, Vorzeichen erzwingen, Datumswerte formatieren und beim Debugging gleichzeitig einen Ausdruck und dessen Ergebnis anzeigen.
Der größte Teil dieser Möglichkeiten steckt hinter dem Doppelpunkt innerhalb eines Replacement Fields:
f"{wert:formatangabe}"
Dort beginnt die Format Specification Mini-Language – kurz Format-Mini-Sprache.
Die Grundform eines f-Strings
Ein f-String beginnt mit einem f direkt vor dem öffnenden Anführungszeichen:
name = "Karl"
text = f"Willkommen, {name}!"
Alles zwischen den geschweiften Klammern wird als Python-Ausdruck ausgewertet:
hp = 75
max_hp = 100
print(f"Fehlende HP: {max_hp - hp}")
Die Ausgabe lautet:
Fehlende HP: 25
Du bist nicht auf einfache Variablennamen beschränkt. Innerhalb der Klammern kannst Du beispielsweise:
- Berechnungen ausführen,
- Methoden aufrufen,
- auf Listen und Dictionaries zugreifen,
- Funktionen aufrufen,
- Bedingungen als Ausdruck verwenden.
spieler = {
"name": "Karl",
"hp": 75,
}
print(f"Name: {spieler['name'].upper()}")
print(f"Doppelte HP: {spieler['hp'] * 2}")
print(f"Status: {'lebendig' if spieler['hp'] > 0 else 'besiegt'}")
Die Ausgabe lautet:
Name: KARL
Doppelte HP: 150
Status: lebendig
Trotzdem sollte ein f-String lesbar bleiben. Umfangreiche Berechnungen oder mehrere verschachtelte Bedingungen gehören meistens besser in eine eigene Variable oder Funktion.
Die Format-Mini-Sprache
Nach dem Ausdruck kannst Du mit einem Doppelpunkt eine Formatangabe ergänzen:
f"{wert:formatangabe}"
Einige einfache Beispiele:
>>> f"{3.14159:.2f}"
'3.14'
>>> f"{42:5}"
' 42'
>>> f"{'links':<10}|"
'links |'
Die Formatangabe .2f bedeutet:
f: Darstellung als Festkommazahl.2: zwei Stellen nach dem Dezimalpunkt
Die Angabe 5 reserviert mindestens fünf Zeichen für den Wert. Zahlen werden
dabei standardmäßig rechtsbündig ausgerichtet.
Die vollständige Format-Mini-Sprache besitzt vereinfacht diese Reihenfolge:
[[Füllzeichen]Ausrichtung][Vorzeichen][#][0][Breite][Gruppierung][.Präzision][Typ]
Nicht jeder Teil ist bei jedem Datentyp sinnvoll. Außerdem können eigene Klassen selbst bestimmen, welche Formatangaben sie unterstützen.
Du musst Dir diese Reihenfolge nicht auswendig merken. In der Praxis werden meistens nur einige wenige Bestandteile miteinander kombiniert.
Ausrichtung und Breite
Mit einer Zahl legst Du die Mindestbreite des Feldes fest:
>>> f"{42:5}"
' 42'
>>> f"{'Karl':10}"
'Karl '
Zahlen sind standardmäßig rechtsbündig, Strings linksbündig.
Mit einem Alignment-Zeichen steuerst Du die Ausrichtung ausdrücklich:
| Zeichen | Bedeutung |
|---|---|
< |
linksbündig |
> |
rechtsbündig |
^ |
zentriert |
= |
Vorzeichen links, Ziffern rechts auffüllen |
Beispiele:
>>> f"{'links':<10}|"
'links |'
>>> f"{'rechts':>10}|"
' rechts|'
>>> f"{'mitte':^10}|"
' mitte |'
Die |-Zeichen gehören nicht zur Formatierung. Sie machen lediglich sichtbar,
wo das reservierte Feld endet.
Eigenes Füllzeichen verwenden
Direkt vor dem Alignment-Zeichen kannst Du ein Füllzeichen angeben:
>>> f"{'Dungeon':-^20}"
'------Dungeon-------'
>>> f"{'Warnung':!<20}"
'Warnung!!!!!!!!!!!!!'
>>> f"{42:.>8}"
'......42'
Die allgemeine Form lautet:
Füllzeichen + Ausrichtung + Breite
Bei
f"{'Dungeon':-^20}"
bedeutet das:
-: freie Stellen mit Bindestrichen füllen^: Text zentrieren20: insgesamt mindestens 20 Zeichen verwenden
Das Füllzeichen darf nur ein einzelnes Zeichen lang sein.
Tabellen ausrichten
Mit einer festen Breite kannst Du einfache Tabellen erzeugen:
spieler = [
("Karl", 100, 50),
("Goblin", 30, 4),
("Drache", 999, 12500),
]
print(f"{'Name':<10} {'HP':>5} {'Gold':>8}")
print("-" * 25)
for name, hp, gold in spieler:
print(f"{name:<10} {hp:>5} {gold:>8}")
Die Ausgabe lautet:
Name HP Gold
-------------------------
Karl 100 50
Goblin 30 4
Drache 999 12500
Jede Spalte reserviert eine feste Anzahl von Zeichen:
{name:<10}
{hp:>5}
{gold:>8}
Dadurch stehen die Werte sauber untereinander.
Bei Emojis, manchen asiatischen Schriftzeichen oder kombinierten Unicode-Zeichen kann die sichtbare Breite im Terminal von der Anzahl der Python-Zeichen abweichen. Für normale lateinische Texte funktioniert diese Methode jedoch gut.
Zahlen mit Nullen auffüllen
Zahlen lassen sich mit führenden Nullen auf eine feste Breite bringen:
>>> f"{7:03}"
'007'
>>> f"{42:05}"
'00042'
Die letzte Zahl gibt die gesamte Mindestbreite an:
0 + Breite
Das ist beispielsweise für fortlaufende IDs praktisch:
for nummer in range(1, 4):
print(f"Raum-{nummer:03}")
Die Ausgabe lautet:
Raum-001
Raum-002
Raum-003
Die ausführlichere Schreibweise mit Füllzeichen und Alignment funktioniert ebenfalls:
>>> f"{7:0>3}"
'007'
Bei positiven Ganzzahlen liefern 03 und 0>3 dasselbe sichtbare Ergebnis. Bei
Vorzeichen verhält sich die spezielle numerische Nullauffüllung jedoch
sinnvoller:
>>> f"{-42:05}"
'-0042'
Das Minuszeichen bleibt links stehen und die Nullen werden zwischen Vorzeichen und Zahl eingefügt.
Nachkommastellen festlegen
Für float-Werte wird häufig der Typ f verwendet:
>>> f"{3.14159:.2f}"
'3.14'
>>> f"{3.14159:.4f}"
'3.1416'
Die Zahl nach dem Punkt bestimmt die Anzahl der Nachkommastellen.
Python rundet den dargestellten Wert entsprechend:
>>> f"{1.999:.2f}"
'2.00'
Die Variable selbst wird dadurch nicht verändert:
wert = 3.14159
print(f"{wert:.2f}")
print(wert)
Die Ausgabe lautet:
3.14
3.14159
Die Formatierung betrifft nur den erzeugten String.
Breite und Präzision kombinieren
Mehrere Angaben lassen sich miteinander verbinden:
>>> f"{3.14159:8.2f}"
' 3.14'
>>> f"{3.14159:08.2f}"
'00003.14'
08.2f bedeutet:
- mindestens acht Zeichen breit,
- mit Nullen auffüllen,
- zwei Nachkommastellen,
- Darstellung als Festkommazahl.
Das ist besonders bei tabellarischen Zahlenwerten hilfreich:
werte = [3.5, 12.75, 123.456]
for wert in werte:
print(f"{wert:8.2f}")
Ausgabe:
3.50
12.75
123.46
Prozentwerte formatieren
Der Formattyp % multipliziert einen Wert mit 100 und hängt ein
Prozentzeichen an:
>>> f"{0.1337:%}"
'13.370000%'
>>> f"{0.1337:.1%}"
'13.4%'
>>> f"{0.5:.0%}"
'50%'
Die Präzision bestimmt auch hier die Anzahl der Nachkommastellen.
Ein Wert von 0.25 entspricht bei dieser Formatierung also 25 %, nicht
0.25 %.
fortschritt = 0.725
print(f"Fortschritt: {fortschritt:.1%}")
Ausgabe:
Fortschritt: 72.5%
Tausendertrenner
Mit einem Komma gruppierst Du große Zahlen in Dreierblöcken:
>>> f"{1234567:,}"
'1,234,567'
Auch Nachkommastellen lassen sich damit kombinieren:
>>> f"{1234567.891:,.2f}"
'1,234,567.89'
Alternativ kannst Du einen Unterstrich verwenden:
>>> f"{1234567:_}"
'1_234_567'
Das Komma erzeugt keinen automatisch an die deutsche Schreibweise angepassten Tausenderpunkt. Die Ausgabe verwendet ein Komma als Gruppierungszeichen und einen Punkt als Dezimaltrennzeichen.
Für eine echte sprach- oder regionsabhängige Darstellung sind Locale-spezifische Formatierung oder eine dafür vorgesehene Library notwendig.
Vorzeichen steuern
Mit + erzwingst Du ein sichtbares Vorzeichen für positive und negative Werte:
>>> f"{42:+}"
'+42'
>>> f"{-42:+}"
'-42'
Das eignet sich beispielsweise für Veränderungen des Player States:
heilung = 20
schaden = -15
print(f"HP: {heilung:+}")
print(f"HP: {schaden:+}")
Ausgabe:
HP: +20
HP: -15
Ein Leerzeichen als Sign-Option reserviert bei positiven Zahlen den Platz des fehlenden Pluszeichens:
>>> f"{42: }"
' 42'
>>> f"{-42: }"
'-42'
Dadurch lassen sich positive und negative Werte untereinander ausrichten.
Andere Zahlensysteme
Ganzzahlen können als Binär-, Oktal- oder Hexadezimalzahl ausgegeben werden:
| Typ | Darstellung |
|---|---|
b |
binär |
o |
oktal |
x |
hexadezimal mit Kleinbuchstaben |
X |
hexadezimal mit Großbuchstaben |
>>> f"{255:b}"
'11111111'
>>> f"{255:o}"
'377'
>>> f"{255:x}"
'ff'
>>> f"{255:X}"
'FF'
Mit # ergänzt Python das übliche Präfix:
>>> f"{255:#b}"
'0b11111111'
>>> f"{255:#o}"
'0o377'
>>> f"{255:#x}"
'0xff'
>>> f"{255:#X}"
'0XFF'
Auch hier lassen sich mehrere Formatangaben kombinieren:
>>> f"{255:#010b}"
'0b11111111'
Die Ausgabe ist mindestens zehn Zeichen breit und enthält das Präfix 0b.
Wissenschaftliche Schreibweise
Für sehr große oder sehr kleine Zahlen stehen e und E zur Verfügung:
>>> f"{1234567:e}"
'1.234567e+06'
>>> f"{1234567:.2e}"
'1.23e+06'
>>> f"{1234567:.2E}"
'1.23E+06'
Der Typ g wählt abhängig von Größe und Präzision eine kompakte Darstellung:
>>> f"{1234567:.4g}"
'1.235e+06'
>>> f"{12.34567:.4g}"
'12.35'
Für normale Benutzeroberflächen ist f oft besser vorhersehbar. g eignet sich
dagegen für kompakte technische Ausgaben mit sehr unterschiedlich großen
Werten.
Debug-Syntax mit =
Seit Python 3.8 kannst Du direkt hinter einem Ausdruck ein Gleichheitszeichen setzen:
hp = 75
print(f"{hp=}")
Die Ausgabe enthält sowohl den Ausdruck als auch seinen Wert:
hp=75
Das funktioniert auch mit komplexeren Ausdrücken:
hp = 75
max_hp = 100
print(f"{max_hp - hp=}")
print(f"{hp * 2=}")
Ausgabe:
max_hp - hp=25
hp * 2=150
Diese Schreibweise ist beim schnellen Debugging praktisch, weil Du nicht zusätzlich einen erklärenden String schreiben musst:
print("hp =", hp)
Leerzeichen bleiben erhalten
Die Debug-Syntax übernimmt die Schreibweise des Ausdrucks einschließlich vieler Leerzeichen:
hp = 75
print(f"{hp = }")
Ausgabe:
hp = 75
Du kannst dadurch selbst bestimmen, wie kompakt die Ausgabe aussehen soll.
Debug-Syntax mit Formatangabe
Auch Formatangaben lassen sich mit = kombinieren:
trefferquote = 0.7564
print(f"{trefferquote=:.1%}")
Ausgabe:
trefferquote=75.6%
Ebenso funktionieren Conversions:
name = "Karl\n"
print(f"{name=!r}")
Ausgabe:
name='Karl\n'
Conversions mit !s, !r und !a
Vor dem Doppelpunkt kann eine Conversion stehen:
f"{ausdruck!conversion:formatangabe}"
Python unterstützt drei Varianten:
| Conversion | Verwendete Funktion |
|---|---|
!s |
str(...) |
!r |
repr(...) |
!a |
ascii(...) |
!s: normale String-Darstellung
!s ruft str(...) auf:
name = "Karl"
print(f"{name!s}")
Bei normalen Strings ist das Ergebnis meist identisch zur Ausgabe ohne Conversion.
!r: genaue Repräsentation
!r ruft repr(...) auf und ist besonders beim Debugging hilfreich:
name = "Karl "
print(f"{name!r}")
Ausgabe:
'Karl '
Die Anführungszeichen machen sichtbar, dass es sich um einen String handelt. Außerdem ist das Leerzeichen vor dem schließenden Anführungszeichen nun leichter zu erkennen.
Escape-Sequenzen bleiben ebenfalls sichtbar:
text = "Zeile 1\nZeile 2"
print(f"{text!r}")
Ausgabe:
'Zeile 1\nZeile 2'
!a: Nicht-ASCII-Zeichen escapen
!a verwendet ascii(...):
name = "Jörg"
print(f"{name!a}")
Ausgabe:
'J\xf6rg'
Nicht-ASCII-Zeichen werden dabei durch Escape-Sequenzen dargestellt.
Im normalen Anwendungscode wird !a selten benötigt. Beim Untersuchen von
Encoding-Problemen kann es jedoch nützlich sein.
Dynamische Breite und Präzision
Eine Formatangabe kann selbst Replacement Fields enthalten. Dadurch lassen sich Breite und Präzision zur Laufzeit festlegen:
wert = 3.14159
stellen = 3
print(f"{wert:.{stellen}f}")
Ausgabe:
3.142
Der innere Ausdruck
{stellen}
wird zuerst ausgewertet. Daraus entsteht die Formatangabe .3f, die
anschließend auf wert angewendet wird.
Auch die Breite kann dynamisch sein:
name = "Karl"
breite = 12
print(f"|{name:^{breite}}|")
Ausgabe:
| Karl |
Breite und Präzision lassen sich kombinieren:
wert = 3.14159
breite = 10
stellen = 2
print(f"{wert:{breite}.{stellen}f}")
Ausgabe:
3.14
Solche dynamischen Formatangaben sind beispielsweise sinnvoll, wenn der Benutzer die Anzahl der Nachkommastellen festlegen kann oder Tabellenbreiten aus Daten berechnet werden.
Formatangaben können verschachtelte Replacement Fields enthalten. Tieferes Verschachteln ist allerdings nicht beliebig garantiert und wird schnell schwer lesbar. Für komplexe Fälle solltest Du die Formatangabe vorher in einer Variablen zusammensetzen:
stellen = 2
formatangabe = f".{stellen}f"
wert = 3.14159
print(f"{wert:{formatangabe}}")
Datum und Uhrzeit formatieren
Objekte dürfen ihre eigene Bedeutung der Formatangabe definieren. Ein wichtiges
Beispiel sind date- und datetime-Objekte.
from datetime import datetime
zeitpunkt = datetime(2026, 6, 23, 14, 30)
print(f"{zeitpunkt:%Y-%m-%d %H:%M}")
Ausgabe:
2026-06-23 14:30
Die Format-Codes entsprechen denen von strftime(...).
Einige häufig verwendete Codes:
| Code | Bedeutung | Beispiel |
|---|---|---|
%Y |
vierstelliges Jahr | 2026 |
%m |
Monat | 06 |
%d |
Tag | 23 |
%H |
Stunde im 24-Stunden-Format | 14 |
%M |
Minute | 30 |
%S |
Sekunde | 00 |
%A |
ausgeschriebener Wochentag | abhängig von Locale |
%B |
ausgeschriebener Monat | abhängig von Locale |
Eine deutsche Datumsdarstellung lässt sich numerisch so erzeugen:
print(f"{zeitpunkt:%d.%m.%Y um %H:%M Uhr}")
Ausgabe:
23.06.2026 um 14:30 Uhr
Die Format-Mini-Sprache wird also vom jeweiligen Datentyp interpretiert.
Zahlen und datetime-Objekte verstehen deshalb unterschiedliche Format-Codes.
Geschweifte Klammern ausgeben
Geschweifte Klammern markieren in einem f-String normalerweise ein Replacement Field:
name = "Karl"
print(f"Hallo, {name}!")
Möchtest Du eine echte geschweifte Klammer ausgeben, musst Du sie verdoppeln:
print(f"Eine Klammer sieht so aus: {{")
print(f"Ein Paar sieht so aus: {{}}")
Ausgabe:
Eine Klammer sieht so aus: {
Ein Paar sieht so aus: {}
Das gilt auch für die schließende Klammer:
print(f"{{links}} und {{rechts}}")
Ausgabe:
{links} und {rechts}
Ein Backslash wie \{ ersetzt diese Schreibweise nicht.
Mehrzeilige f-Strings
Wie normale Strings können auch f-Strings mit dreifachen Anführungszeichen über mehrere Zeilen gehen:
name = "Karl"
hp = 75
gold = 50
status = f"""
Name: {name}
HP: {hp}
Gold: {gold}
"""
print(status)
Dabei gehört der Zeilenumbruch direkt nach den öffnenden Anführungszeichen zum String. Möchtest Du ihn vermeiden, kannst Du den f-String anders anordnen:
status = (
f"Name: {name}\n"
f"HP: {hp}\n"
f"Gold: {gold}"
)
Nebeneinanderstehende String-Literale in Klammern werden von Python automatisch verbunden. Jeder Teil kann dabei ein eigener f-String sein.
Diese Variante ist häufig leichter einzurücken und erzeugt keine unbeabsichtigten Leerzeilen.
Was sich mit Python 3.12 geändert hat
Mit Python 3.12 wurde die Grammatik von f-Strings durch PEP 701 in den normalen Python-Parser integriert.
Dadurch entfallen mehrere historische Einschränkungen.
Dieselben Anführungszeichen innen und außen
Seit Python 3.12 darf ein Ausdruck denselben Typ von Anführungszeichen verwenden wie der äußere f-String:
spieler = {
"name": "Karl",
}
print(f"{spieler["name"]}")
Vor Python 3.12 führte diese Schreibweise zu einem SyntaxError. Damals musste
für den Dictionary-Schlüssel ein anderer Typ von Anführungszeichen verwendet
werden:
print(f"{spieler['name']}")
Die ältere Schreibweise funktioniert weiterhin und ist für viele Menschen sogar leichter zu lesen.
Backslashes innerhalb eines Ausdrucks
Backslashes sind seit Python 3.12 auch innerhalb eines Replacement Fields erlaubt:
zeilen = ["Halle", "Bibliothek", "Krypta"]
print(f"Räume:\n{"\n".join(zeilen)}")
Ausgabe:
Räume:
Halle
Bibliothek
Krypta
Vor Python 3.12 war "\n" innerhalb des Ausdrucks eines f-Strings nicht
zulässig.
Mehrzeilige Ausdrücke und Kommentare
Ausdrücke in f-Strings dürfen sich seit Python 3.12 natürlicher über mehrere Zeilen erstrecken und Kommentare enthalten:
hp = 75
max_hp = 100
text = f"""Fehlende HP: {
max_hp - hp # Differenz zum Maximum
}"""
print(text)
Ausgabe:
Fehlende HP: 25
Steht innerhalb des Ausdrucks ein Kommentar, muss die schließende Klammer in
einer späteren Zeile stehen. Alles hinter # bis zum Zeilenende gehört zum
Kommentar.
f-Strings lassen sich leichter verschachteln
Auch verschachtelte f-Strings können seit Python 3.12 dieselben Anführungszeichen wiederverwenden:
name = "Karl"
text = f"Spieler: {f"{name:^10}"}"
print(text)
Das ist gültig, bedeutet aber nicht automatisch, dass es gut lesbar ist.
Meistens ist eine Zwischenvariable klarer:
name = "Karl"
formatierter_name = f"{name:^10}"
text = f"Spieler: {formatierter_name}"
PEP 701 erlaubt Python-Implementierungen außerdem, eine maximale Verschachtelungstiefe festzulegen. Du solltest daher nicht versuchen, möglichst viele f-Strings ineinander zu stapeln.
f-Strings und eigene Klassen
Die Formatierung eines Wertes wird letztlich über dessen Methode
__format__(...) gesteuert.
Dadurch können eigene Klassen benutzerdefinierte Formatangaben unterstützen:
class Spieler:
def __init__(self, name, hp):
self.name = name
self.hp = hp
def __format__(self, formatangabe):
if formatangabe == "kurz":
return f"{self.name} ({self.hp} HP)"
return self.name
spieler = Spieler("Karl", 75)
print(f"{spieler}")
print(f"{spieler:kurz}")
Ausgabe:
Karl
Karl (75 HP)
Für den normalen Einstieg musst Du __format__(...) noch nicht selbst
implementieren. Das Beispiel erklärt aber, warum verschiedene Datentypen
unterschiedliche Formatangaben verstehen.
Ein float interpretiert .2f anders als ein datetime-Objekt die Angabe
%d.%m.%Y.
f-Strings sind keine Templates für alles
f-Strings setzen Werte unmittelbar beim Erzeugen des Strings ein:
name = "Karl"
text = f"Hallo, {name}!"
text enthält danach nur noch den fertigen String:
Hallo, Karl!
Änderst Du name später, verändert sich text nicht automatisch:
name = "Karl"
text = f"Hallo, {name}!"
name = "Lara"
print(text)
Ausgabe:
Hallo, Karl!
Der f-String müsste erneut ausgewertet werden, um den neuen Wert einzusetzen.
Außerdem übernehmen f-Strings keine automatische Absicherung oder Kontext-Escaping. Benutzereingaben sollten deshalb nicht direkt per f-String in SQL-Abfragen oder Shell-Kommandos eingebaut werden:
# Nicht für Benutzereingaben verwenden:
sql = f"SELECT * FROM spieler WHERE name = '{name}'"
Für SQL-Abfragen verwendest Du stattdessen die Parameterübergabe des jeweiligen Datenbanktreibers.
Ein f-String ist ein Werkzeug zum Erzeugen von Strings, keine allgemeine Template- oder Sicherheitslösung.
Stolperfallen
- Das
fvergessen: Ohne das Präfix bleibt{name}normaler Text.
python
name = "Karl"
print("{name}")
Ausgabe:
console
{name}
-
Eine einzelne geschweifte Klammer verwenden: Für eine sichtbare Klammer benötigst Du
{{oder}}. -
Breite mit maximaler Länge verwechseln:
{text:10}reserviert mindestens zehn Zeichen. Ein längerer String wird nicht abgeschnitten. -
join(...)mit Zahlen verwenden:join(...)erwartet Strings. Zahlen müssen zunächst umgewandelt werden. -
Vom Tausendertrenner auf die Locale schließen:
:,erzeugt ein Komma als Gruppierungszeichen und keine automatisch deutsche Zahlendarstellung. -
Zu viel Logik in den f-String schreiben: Nur weil ein Ausdruck syntaktisch erlaubt ist, wird er dadurch nicht gut lesbar.
-
Versionsabhängige Syntax verwenden: Wiederverwendete Anführungszeichen, Backslashes und Kommentare innerhalb der Replacement Fields benötigen mindestens Python 3.12.
-
Ungeprüfte Daten in SQL oder Shell-Kommandos einsetzen: f-Strings escapen die eingesetzten Werte nicht für den jeweiligen Kontext.
Kompakte Übersicht
| Aufgabe | Beispiel |
|---|---|
| Wert einsetzen | f"{name}" |
| Ausdruck auswerten | f"{hp * 2}" |
| zwei Nachkommastellen | f"{wert:.2f}" |
| Mindestbreite | f"{wert:10}" |
| linksbündig | f"{text:<10}" |
| rechtsbündig | f"{text:>10}" |
| zentriert | f"{text:^10}" |
| eigenes Füllzeichen | f"{text:-^20}" |
| führende Nullen | f"{nummer:04}" |
| Tausendertrenner | f"{zahl:,}" |
| Prozent | f"{anteil:.1%}" |
| Vorzeichen | f"{wert:+}" |
| hexadezimal | f"{wert:#x}" |
| Debug-Syntax | f"{wert=}" |
repr(...) verwenden |
f"{wert!r}" |
| dynamische Präzision | f"{wert:.{stellen}f}" |
| Datum formatieren | f"{datum:%d.%m.%Y}" |
| sichtbare Klammern | f"{{wert}}" |
0 Kommentare
Noch keine Kommentare. Sei der/die Erste!
Anmelden um einen Kommentar zu hinterlassen.