Die Funktion "print" in Python (Die Funktion "print" in Python), Lektion, Seite 723981
https://www.purl.org/stefan_ram/pub/print_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Die Funktion »print« in Python 

Nach der Eingabe eines Ausdrucks in die Konsole wird eine Textdarstellung  des Wertes jenes Ausdrucks ausgegeben (wenn kein Fehler auftritt und der Wert nicht ›None‹ ist). Tatsächlich gibt es in Python  verschiedene Arten von Textdarstellungen, darunter die repr- und die str-Darstellung. Bei der bisher verwendeten Form der Darstellung handelte es sich um die repr-Darstellung, welche beispielsweise Apostrophe zu einer Zeichenfolge hinzufügt.

Eingabe eines Ausdrucks und Ausgabe der repr-Darstellung seines Wertes
'abc'
'abc'

Durch Auswertung eines print-Aufrufes können wir die str-Darstellung eines Wertes ausgeben. Sie fügt beispielsweise zu Zeichenfolgen keine  Apostrophe hinzu. Dadurch ist der Typ des Wertes weniger gut erkennbar, aber die Ausgabe kann so genauer kontrolliert werden und ist auch manchmal übersichtlicher.

Auswertung
print( 'abc' )
abc

Die str-Darstellung einer Zeichenfolge ist im wesentlichen die Zeichenfolge selber. Daher gibt »print« eine Zeichenfolge praktisch unverändert aus.

Ausgabe der Ausgabedarstellung des Objekts eines Ausdrucks

Ausdruck ----------> Objekt --------------.-----> repr-Ausgabedarstellung
Auswertung Ausgabe | z.B.: 'abc'
|
'-----> str-Ausgabedarstellung
z.B.: abc

Die str-Darstellung ist die „normale“ Darstellung eines Objektes, wie sie etwa auch zur Ausgabe für Benutzer eines Programms verwendet wird.

Die repr-Darstellung zeigt Objekte manchmal eher so, wie diese in den Quelltext geschrieben werden (bei str-Objekten) und richtet sich daher eher an Programmierer.

Semantik

Änderung

Die Auswertung eines Aufrufs von »print« hat bewirkt die Ausgabe der str-Textdarstellung des Argumentwertes.

(Eine Ausgabe verändert die Schreibfläche, daher stellt sie eine Änderung dar.)

Wert

Der Wert eines Aufrufs von »print« ist stets das Objekt ›None‹.

Der Typ des Wertes eines Aufrufs von »print« ist daher stets die Klasse »NoneType« (»NoneType« kann aber normalerweise nicht als Ausdruck verwendet werden!).

Die Ausgabe von »None«

Der Wert »None« wird von der Konsole normalerweise nicht ausgegeben. Mit »print« kann dieser Wert jedoch ausgegeben werden (als Textdarstellung »None«).

Konsolenprotokoll
None
(keine Ausgabe)
Konsolenprotokoll
print( None )
None

Die Ausgabe von ›True

Ganz verschiedene Werte können die gleiche Ausgabedarstellung haben.

Protokoll
print( 'True' )
True
Protokoll
print( True )
True

Der Operator »==« zeigt aber, daß die Werte nicht gleich sind.

Protokoll
print( 'True' == True )
False

Die Grundstrich »_« der Konsole ⃗

Da der Wert eines print-Aufrufs stets das Objekt ›None‹ ist, wird durch einen print-Aufruf die Bindung des Grundstrichs nicht verändert.

Konsolenprotokoll
10
10
print( _ + 1 )
11
print( _ + 2 )
12

Die Reihenfolge der Auswertung von Operanden

Operanden werden von links nach rechts  ausgewertet. Die Funktion ›print‹ erlaubt es uns, dies deutlich vorzuführen.

Konsolenprotokoll

print( 3 )or print( 4 )

3

4

Zitat *
6.15 Evaluation order
Python evaluates expressions from left to right.
The Python Language Reference, Release 3.9.0a3

Die Ausgabe von Sonderzeichen

Die Ausgabe mancher Zeichen bewirkt besondere Aktionen des Ausgabesystems. Die Ausgabe von ›'\n'‹ bewirkt die Beendigung der Zeile.

Protokoll
print( 'def\nghi' )
def
ghi

Lambda zitiert Ausdrücke, ohne sie auszuwerten

Bei der Zuweisung wird die rechte Seite stets ausgewertet :

Protokoll
f = print( 1 )
1

Bei der Auswertung eines Lambda-Ausdrucks wird aber der Ausdruck hinter dem Doppelpunkt nicht ausgewertet, sondern lediglich im sich ergebenden Lambda-Objekt gespeichert.

Protokoll
f = lambda: print( 1 )
(keine Ausgabe)

Erst beim Aufruf einer Lambda-Funktion wird der gespeicherte Ausdruck dann ausgewertet.

Protokoll
f()
1

Man kann daher sagen, daß die Auswertung mit »lambda« verzögert werden kann.

Außerdem ist es auch möglich, den einmal gespeicherten Ausdruck mehrfach auswerten zu lassen.

Protokoll
f()
1
f()
1
f()
1

Ersatzdarstellungen des Quelltextes °

Im Quelltext einer Zeichenfolge muß das Zeichen „Inverser Schrägstrich“ »\« (etwas vereinfacht gesagt) durch zwei inverse Schrägstriche dargestellt werden. Bei der Wert-Ausgabe in der Konsole sieht man dann auch wieder zwei inverse Schrägstriche, doch »print« zeigt die Zeichenfolge unverändert an.

Ausgabe mit »print«
print( 'def\\ghi' )
def\ghi
Ausgabe des Wertes einer Auswertungsanweisung in der Konsole
'def\\ghi'
'def\\ghi'

Nur die Ausgabe mit ›print‹ zeigt hier die tatsächliche Zeichenfolge »def\ghi« korrekt an!

Auch wenn die Schreibweisen »\n« und »\\« innerhalb von Zeichenfolgenliteralen zwei  Zeichen sind, stehen sie jeweils für ein einziges  Zeichen in der Zeichenfolge.

Auswertung
len( '\n' )
1
Auswertung
print( '\n' )
(Leerzeile)
Auswertung
len( '\\' )
1
Auswertung
print( '\\' )
\

»print« kann verwendet werden, um Zeichenfolgen mit inversen Schrägstrichen wörtlich zu sehen.

Protokoll

from os import getcwd

getcwd()

'C:\\Users\\example\\AppData\\Local\\Programs\\Python\\Python39'
Protokoll
print( getcwd() )
C:\Users\example\AppData\Local\Programs\Python\Python39

Kuriosität Wenn der inverse Schrägstrich keine spezielle Kombination (wie »\n« oder »\\«) einleitet, steht er für sich selbst.

Auswertung
print( '\d' )
\d

Ausgabe des Ergebnisses einer Verkettung ⃗

Mit Hilfe des Operators »+« können auch Zeichenfolgen mit Apostrophen und  Anführungszeichen aufgebaut werden.

Die sich ergebende Zeichenfolge kann aber erst mit »print« übersichtlich dargestellt werden.

Auswertung mit »print«
print( 'x"x' + "o'o" )
x"xo'o
Auswertung ohne »print«
'x"x' + "o'o"
'x"xo\'o'

Ausgabe mehrzeiliger Texte °

Erst durch die str-Darstellung, wie »print« sie verwendet, erscheinen mehrzeilige Text übersichtlich und wie beabsichtigt.

Protokoll

from inspect import getdoc

getdoc( input )

'Read a string from standard input.  The trailing newline is stripped.\n\nThe prompt string, if given, is printed to standard output without a\ntrailing newline before reading input.\n\nIf the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.\nOn *nix systems, readline is used if available.'
print( _ )

Read a string from standard input. The trailing newline is stripped.

The prompt string, if given, is printed to standard output without a
trailing newline before reading input.

If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.

Protokoll (Alternative Version ohne »_«)

from inspect import getdoc

getdoc( input )

'Read a string from standard input.  The trailing newline is stripped.\n\nThe prompt string, if given, is printed to standard output without a\ntrailing newline before reading input.\n\nIf the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.\nOn *nix systems, readline is used if available.'
print( getdoc( input ))

Read a string from standard input. The trailing newline is stripped.

The prompt string, if given, is printed to standard output without a
trailing newline before reading input.

If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.

lambda-Ausdrücke mit »print« °

Ein lambda-Ausdruck kann auch einen print-Aufruf enthalten.

Protokoll

p = lambda: print( 38 )

p()

38
p()
38

Die von der Auswertung von »_()« bewirkte Änderung ist die Ausgabe von »38«, der erhaltene Wert ›None‹ wurde von der Konsole nicht ausgegeben. Da ›None‹ den Wert von »_()« nicht ändert, können wir nun ein und dieselbe Lambda-Funktion mehrfach aufrufen. So können wir auch sehen: »lambda« zitiert den Aufruf von ›lambda‹ nur (speichert ihn also nur ab), ausgewertet  wird jener Aufruf erst bei Aufruf  der lambda-Funktion.

Protokoll

from random import random

r = lambda: print( random() )

r()

0.34093548594378934
r()
0.245724857292534093

Typen von Ausgaben °

Nur Objekte haben einen Typ. Ausgaben haben keinen Typ. Um das Zeichen »2« mit »print« auszugeben, ist daher »print( 2 )« die kürzeste Möglichkeit.

Protokoll
print( 2 )
2

Die Verwendung eines str-Objekts ist nicht nötig, weil es im Ergebnis keinen Unterschied gibt.

Protokoll
print( '2' )
2

Zeichengenaue Ausgabe von Numeralia ⃗

Wie schon früher behandelt wurde, wird bei ein Wert mit Nachkommastellen bei der Ausgabe manchmal auf eine bestimmte Anzahl von Stellen abgeschnitten.

Eingabe eines Quelltextes und Ausgabe seines Wertes
12.00
12.0
Eingabe eines Quelltextes und Ausgabe seines Wertes
3.1415926535897932
3.141592653589793

Der Text »12.00« oder der Text »3.1415926535897932« kann aber mit »print« und einem Zeichenfolgenliteral ausgegeben werden.

Zeichengenaue Ausgabe eines Numerales
print( '12.00' )
12.00
Eingabe eines Quelltextes und Ausgabe seines Wertes
print( '3.1415926535897932' )
3.1415926535897932

Übungsfragen

?   Fachsprache

Setzen Sie jeweils eine Form der folgenden Verben ein: „übergeben“, „ausgeben“, „akzeptieren“, „einlesen“, „liefern“ und „zurückgeben“.

Mit »input« wird ein Wert __________ .

Mit »print« wird ein Wert __________ .

In »f( 5 )« wird der Wert «5» an die Funktion ›f‹ __________ .

In »f( 5 )« __________ die Funktion ›f‹ den Wert «5».

Von »input« wird ein str-Wert __________ .

Ein Argumentwert wird an eine Funktion übergeben. Man kann dazu auch sagen, daß die Funktion den Argumentwert akzeptiert.
Zum Ausgeben  wird »print« verwendet.
Zum Einlesen  wird »input« verwendet.
Von einer aufgerufenen Funktion wird ein Ergebniswert zurückgegeben  oder geliefert.

Übungsaufgaben

/   Übungsaufgabe

Schreiben Sie eine Anweisung, bei deren Ausführung der Ausdruck »print( 2 )« ausgewertet wird.

»print« in Python 2 

In Python 2  war »print« ein Schlüsselwort, das auch ohne Klammern verwendet werden konnte – wie beispielsweise in der Python2 -Anweisung »print 2«.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723981 stefan_ram:723981 Die Funktion "print" in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723981, slrprddef723981, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/print_python