print()
¶
Die Funktion print()
gibt Zeichenketten aus wobei andere Python-Datentypen
leicht in Strings umgewandelt und formatiert werden können, z.B.:
>>> import math
>>> pi = math.pi
>>> d = 28
>>> u = pi * d
>>> print(
... "Pi ist",
... pi,
... "und der Umfang bei einem Durchmesser von",
... d,
... "Zoll ist",
... u,
... "Zoll.",
... )
Pi ist 3.141592653589793 und der Umfang bei einem Durchmesser von 28 Zoll ist 87.96459430051421 Zoll.
F-Strings¶
Mit F-Strings lassen sich die für einen Text zu detaillierten Zahlen kürzen:
>>> print(f"Der Wert von Pi ist {pi:.3f}.")
Der Wert von Pi ist 3.142.
In {pi:.3f}
wird die Format-Spezifikation f
verwendet, um die Zahl Pi
auf drei Nachkommastellen zu kürzen.
In A/B-Testszenarien möchtet ihr oft die prozentuale Veränderung einer Kennzahl darstellen. Mit F-Strings können sie verständlich formuliert werden:
>>> metrics = 0.814172
>>> print(f"Die AUC hat sich vergrößert auf {metrics:=+7.2%}")
Die AUC hat sich vergrößert auf +81.42%
In diesem Beispiel wird die Variable metrics
formatiert, wobei =
die
Inhalte der Variable nach dem +
übernimmt, wobei insgesamt sieben Zeichen
einschließlich des Vorzeichen, metrics
und des Prozentzeichens angezeigt
werden. .2
sorgt für zwei Dezimalstellen, während das %
-Symbol den
Dezimalwert in eine Prozentzahl umwandelt. So wird 0.514172
in +51.42%
umgewandelt.
Werte lassen sich auch in binäre und hexadezimale Werte umrechnen:
>>> block_size = 192
>>> print(f"Binary block size: {block_size:b}")
Binary block size: 11000000
>>> print(f"Hex block size: {block_size:x}")
Hex block size: c0
Es gibt auch Formatierungsangaben, die ideal geeignet sind für die CLI-Ausgabe, z.B.:
>>> data_types = [(7, "Data types", 19), (7.1, "Numbers", 19), (7.2, "Lists", 23)]
>>> for n, title, page in data_types:
... print(f"{n:.1f} {title:.<25} {page: >3}")
...
7.0 Data types............... 19
7.1 Numbers.................. 19
7.2 Lists.................... 23
Allgemein sieht das Format folgendermaßen aus, wobei alle Angaben in eckigen Klammern optional sind:
:[[FILL]ALIGN][SIGN][0b|0o|0x|d|n][0][WIDTH][GROUPING]["." PRECISION][TYPE]
In der folgenden Tabelle sind die Felder für die Zeichenkettenformatierung und ihre Bedeutung aufgeführt:
Feld |
Bedeutung |
---|---|
|
Zeichen, das zum Ausfüllen von |
|
Textausrichtung und Füllzeichen: < : linksbündig> : rechtsbündig^ : zentriert= : Füllzeichen nach SIGN |
|
Vorzeichen anzeigen: + : Vorzeichen bei positiven und negativen
Zahlen anzeigen- : Standardwert, - nur bei negativen Zahlen
oder Leerzeichen bei positiven Zahlen |
|
Vorzeichen für ganze Zahlen: 0b : Binärzahlen0o : Oktalzahlen0x : Hexadezimalzahlend : Standardwert, dezimale Ganzzahl zur Basis 10n : verwendet die aktuelle
locale -Einstellung, um die entsprechenden
Zahlentrennzeichen einzufügen |
|
füllt mit Nullen auf |
|
Minimale Feldbreite |
|
Zahlentrennzeichen: [1] , : Komma als Tausendertrennzeichen_ : Unterstrich für Tausendertrennzeichen |
|
Bei Fließkommazahlen die Anzahl der Ziffern nach
dem Punkt
bei nicht-numerischen Werten die maximale Länge
|
|
Ausgabeformat als Zahlentyp oder Zeichenkette … für Ganzzahlen: b : Binärformatc : konvertiert die Ganzzahl in das
entsprechende Unicode-Zeichend : Standardwert, Dezimalzeichenn : dasselbe wie d , mit dem Unterschied,
dass es die aktuelle locale -Einstellung
verwendet, um die entsprechenden Zahlentrennzeichen
einzufügeno : Oktalformatx : Hexadezimalformat zur Basis 16, wobei für
die Ziffern über 9 Kleinbuchstaben verwendet werdenX : Hexadezimalformat zur Basis 16, wobei für
die Ziffern über 9 Großbuchstaben verwendet werden… für Fließkommazahlen: e : Exponent mit e als Trennzeichen zwischen
Koeffizient und ExponentE : Exponent mit E als Trennzeichen zwischen
Koeffizient und Exponentg : Standardwert für Fließkommazahlen, wobei der
Exponent eine feste Breite für große und
kleine Zahlen erhältG : Wie g , wechselt aber zu E , wenn
die Zahl zu groß wird. Die Darstellungen von
Unendlich und NaN werden ebenfalls in Großbuchstaben
geschriebenn : Wie g mit dem Unterschied, dass es die
aktuelle locale -Einstellung verwendet, um die
die entsprechenden Zahlentrennzeichen einzufügen% : Prozentsatz. Multipliziert die Zahl mit 100
und zeigt sie im festen Format f an, gefolgt
von einem Prozentzeichen |
Tipp
Eine gute Quelle für F-Strings ist die Hilfe-Funktion:
>>> help()
help> FORMATTING
...
Ihr könnt die Hilfe hier durchblättern und viele Beispiele finden.
Mit :–q und ⏎ könnt ihr die Hilfe-Funktion wieder verlassen.
Fehlersuche in F-Strings¶
In Python 3.8 wurde ein Spezifizierer eingeführt, der bei der Fehlersuche in
F-String-Variablen hilft. Durch Hinzufügen eines Gleichheitszeichens =
wird der
Code innerhalb des F-Strings aufgenommen:
>>> uid = "veit"
>>> print(f"My name is {uid.capitalize()=}")
My name is uid.capitalize()='Veit'
Formatierung von Datums-, Zeitformaten und IP-Adressen¶
datetime
unterstützt die Formatierung von Zeichenketten mit der
gleichen Syntax wie die strftime
-Methode
für diese Objekte.
>>> import datetime
>>> today = datetime.date.today()
>>> print(f"Today is {today:%d %B %Y}.")
Today is 26 November 2023.
Das ipaddress
-Modul von Python unterstützt auch die Formatierung von
IPv4Address
- und IPv6Address
-Objekten.
Schließlich können Bibliotheken von Drittanbietern auch ihre eigene
Unterstützung für die Formatierung von Strings hinzufügen, indem sie eine
__format__
-Methode zu ihren Objekten hinzufügen.