Die Python-Funktion print() schreibt eine oder mehrere Werte auf die Standardausgabe (stdout). Über die Parameter sep, end, file und flush lässt sich das Verhalten flexibel steuern — etwa für Logging auf stderr, das Schreiben in Dateien oder die Echtzeit-Ausgabe in CLIs.
Einleitung
print() ist Pythons Allzweck-Output-Funktion. Sie ruft intern str() auf jeden Wert auf, fügt sie mit sep zusammen, hängt end an und schreibt das Ergebnis in den Stream (file, default sys.stdout).
Die wichtigsten Eigenschaften:
- Mehrere Werte gleichzeitig:
print(a, b, c)schreibt sie mit Leerzeichen getrennt. sep(default" "): Trenner zwischen Werten.end(default"\n"): wird nach allen Werten geschrieben.file: Stream-Objekt, in das geschrieben wird —sys.stderr, eine offene Datei oderio.StringIO.flush(defaultFalse): BeiTruewird der Buffer sofort entleert — wichtig für Live-Ausgaben in Pipes.
In Production-Code wird print() meistens durch das logging-Modul ersetzt — für CLI-Tools, Skripte und Debugging bleibt print() aber unverzichtbar.
Syntax
print(*objects, sep=" ", end="\n", file=sys.stdout, flush=False)*objects Beliebig viele Werte. Werden mit str() in Strings umgewandelt.
sep (Optional) Trenner zwischen den Werten — Default: einzelnes Leerzeichen.
end (Optional) String, der nach allen Werten geschrieben wird — Default: Newline \n.
file (Optional) Stream-Objekt mit write()-Methode — Default: sys.stdout.
flush (Optional) Wenn True, wird der Output sofort gepusht — Default: False.
Rückgabewert
None. print() ist nur wegen seines Seiteneffekts (Schreiben) interessant.
Beispiele
Standard-Ausgabe
Mehrere Argumente werden mit Leerzeichen verbunden — der häufigste Anwendungsfall:
print("Hallo", "Welt")
print(1, 2, 3, "Punkte")Hallo Welt
1 2 3 Punktesep und end anpassen
Mit sep und end lassen sich CSV-Zeilen, Listen oder Inline-Texte ohne String-Konkatenation bauen:
print("a", "b", "c", sep="-")
print("ohne newline", end=" → ")
print("nächster Teil")
# Werte für CSV
print("Alice", 17, "Bob", sep=",")a-b-c
ohne newline → nächster Teil
Alice,17,BobIn stderr ausgeben
Trennt man Programm-Output (stdout) von Logs/Fehlern (stderr) sauber, lassen sich CLI-Tools gut in Pipelines einbinden:
import sys
print("Normaler Output")
print("Fehler!", file=sys.stderr)Normaler Output
Fehler!In einen String schreiben
Mit io.StringIO lässt sich print() umlenken — praktisch für Tests oder Buffered Output:
import io
buf = io.StringIO()
print("Hallo", "Welt", sep="-", file=buf)
print(buf.getvalue().rstrip())Hallo-WeltPraktische Beispiele
Progress-Anzeige in einer Schleife
end="\r" und flush=True machen aus einer einfachen Schleife eine Live-Progress-Anzeige im Terminal:
import time
for i in range(101):
print(f"\rFortschritt: {i:3d}%", end="", flush=True)
time.sleep(0.01)
print() # finaler NewlineTabelle mit ausgerichteten Spalten
Mit f-Strings und print() ist eine kleine Konsolen-Tabelle in 5 Zeilen gebaut:
products = [("Apfel", 0.49), ("Brot", 2.30), ("Wassermelone", 4.95)]
print(f"{'Name':<14}{'Preis':>8}")
print("-" * 22)
for name, preis in products:
print(f"{name:<14}{preis:>8.2f}")Name Preis
----------------------
Apfel 0.49
Brot 2.30
Wassermelone 4.95print mit Datei-Output
Mit file=open(...) schreibt print direkt in eine Datei — der Context Manager schließt sauber:
with open("report.txt", "w", encoding="utf-8") as f:
print("Bericht vom 03.05.2026", file=f)
print("-" * 30, file=f)
print("Alle Tests bestanden.", file=f)Praktische Hinweise
- f-Strings statt
+:print(f"x = {x}")ist immer lesbarer alsprint("x = " + str(x)). - Für Production:
loggingstattprint.print()lässt sich nicht zentral abschalten oder umkonfigurieren. flush=Truein Live-Ausgaben und Pipes (tee, Docker-Logs) — sonst sieht man die Ausgabe erst beim Programmende.- Trenne stdout und stderr in CLI-Tools sauber. Fehler nach
stderr, Daten nachstdout. pprint.pprint()ist ideal für hübsch formatierte Datenstrukturen.