Diese Fehlermeldung bedeutet, dass Sie versuchen, Python 3 zu verwenden, um ein Beispiel zu verfolgen oder ein Programm auszuführen, das die Python 2 print
Anweisung verwendet:
print "Hallo, Welt!"
Die obige Anweisung funktioniert nicht in Python 3. In Python 3 müssen Sie Klammern um den zu druckenden Wert hinzufügen:
print("Hallo, Welt!")
“SyntaxError: Fehlende Klammern beim Aufruf von 'print'” ist eine neue Fehlermeldung, die in Python 3.4.2 hinzugefügt wurde, hauptsächlich um Benutzern zu helfen, die versuchen, einem Python 2 Tutorial zu folgen, während sie Python 3 ausführen.
In Python 3 ist das Drucken von Werten von einer eigenständigen Anweisung zu einem einfachen Funktionsaufruf gewechselt, daher benötigt es nun Klammern:
>>> print("Hallo, Welt!")
Hallo, Welt!
In früheren Versionen von Python 3 meldet der Interpreter einfach einen allgemeinen Syntaxfehler, ohne Hinweise darauf zu geben, was möglicherweise schief läuft:
>>> print "Hallo, Welt!"
File "", line 1
print "Hallo, Welt!"
^
SyntaxError: invalid syntax
Was das Warum betrifft, dass print
in Python 3 zu einer gewöhnlichen Funktion wurde, hängt das nicht mit der grundlegenden Form der Anweisung zusammen, sondern damit, wie Sie kompliziertere Dinge wie das Drucken mehrerer Elemente auf stderr mit einem abschließenden Leerzeichen anstelle des Beendens der Zeile gemacht haben.
In Python 2:
>>> import sys
>>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 6
1 2 3 4 5 6
In Python 3:
>>> import sys
>>> print(1, 2, 3, file=sys.stderr, end=" "); print(4, 5, 6, file=sys.stderr)
1 2 3 4 5 6
Ab der Veröffentlichung von Python 3.6.3 im September 2017 wurden einige Fehlermeldungen, die sich auf die Python 2.x-Drucksyntax beziehen, aktualisiert, um deren entsprechende Python 3.x-Gegenstücke zu empfehlen:
>>> print "Hallo!"
File "", line 1
print "Hallo!"
^
SyntaxError: Fehlende Klammern beim Aufruf von 'print'. Meinten Sie print("Hallo!")?
Da der Fall "Fehlende Klammern beim Aufruf von print" ein Kompilierungszeit-Syntaxfehler ist und daher Zugriff auf den Rohcode hat, kann er den vollständigen Text in der restlichen Zeile in den vorgeschlagenen Ersatz einbeziehen. Der Fehler versucht jedoch derzeit nicht, die passenden Anführungszeichen um diesen Ausdruck herum zu platzieren (das ist nicht unmöglich, aber kompliziert genug, dass es nicht gemacht wurde).
Das für den Rechtsshift-Operator ausgelöste TypeError
wurde ebenfalls angepasst:
>>> print >> sys.stderr
Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Meinten Sie "print(, file=)"?
Da dieser Fehler auftritt, wenn der Code ausgeführt wird und nicht beim Kompilieren, hat er keinen Zugriff auf den Rohcode und verwendet daher Meta-Variablen ( und ) im vorgeschlagenen Ersatzausdruck anstelle dessen, was der Benutzer tatsächlich eingegeben hat. Im Gegensatz zum Fall des Syntaxfehlers ist es einfach, Anführungszeichen um den Python-Ausdruck in der benutzerdefinierten Fehlermeldung für den Rechtsshift zu platzieren.