eval
wertet Ausdrücke, keine Aussagen, so müssen Sie es die print
Funktion passieren, nicht die print
Aussage. Standardmäßig ist print
eine Anweisung in Python 2 und die print
-Anweisung in Python 3 nicht vorhanden. Die print
-Funktion ist jedoch in den neuesten Versionen von Python 2 über einen __future__
Import verfügbar. Die print
-Funktion ist tatsächlich in diesen Versionen von Python 2 definiert, aber sie wird von der print
-Anweisung maskiert; Der Import macht die print
-Anweisung nicht verfügbar, wodurch die print
-Funktion verfügbar gemacht wird.
Demo, getestet auf Python 2.6.6:
from __future__ import print_function
eval("print('foobar')")
Ausgang
foobar
BTW, ist es in der Regel nicht eine gute Idee eval
oder exec
zu verwenden, es sei denn, Du hast keine Alternative. Sie sind relativ langsam und haben Sicherheitsrisiken, wenn Sie ihnen nicht analysierte Zeichenfolgen zum Auswerten/Ausführen übergeben. Für Details siehe bitte Eval really is dangerous von SO Veteran Ned Batchelder. Um einfache Python-Literale auszuwerten, können Sie ast.literal_eval
verwenden.
Was ist Ihre Python-Version? – gzc
Da es einen 'SyntaxError' gibt, ist es python-2.x. Sie benötigen 'exec' für Anweisungen wie' print' in python 2. – MSeifert
w.r.t. das Duplikat: Ich stimme, das offen zu lassen. Das potenzielle Duplikat erwähnt ausdrücklich nicht "print", so dass in Bezug auf Internet-Suchanfragen die aktuelle Frage offen bleiben würde. – kfx