eval
は、式ではなく、ステートメントを評価し、あなたはそれをprint
機能、ないprint
声明を渡す必要があります。デフォルトでは、print
はPython 2のステートメントであり、print
ステートメントはPython 3には存在しません。ただし、print
ファンクションは、__future__
インポートを介してPython 2の最新バージョンで利用できるです。 print
関数は実際にPython 2のこれらのバージョンで定義されていますが、print
ステートメントでマスクされています。インポートによってprint
ステートメントが使用できなくなり、print
関数が公開されます。 Pythonの2.6.6でテスト
デモ、:
foobar
ところで
from __future__ import print_function
eval("print('foobar')")
出力は、それが一般的にないない限りeval
またはexec
を、使用することをお勧めしますあなたには選択肢がありません。それらは比較的遅く、評価されていない文字列を評価/実行するとセキュリティリスクが発生します。詳細はSOベテランNed BatchelderのEval really is dangerousを参照してください。単純なPythonリテラルを評価するには、ast.literal_eval
を使用できます。
あなたのPythonバージョンは何ですか? – gzc
Python-2.xの 'SyntaxError'をスローすると仮定します。 Python 2の 'print'のようなステートメントには' exec'が必要です。 – MSeifert
w.r.t.重複:私はこれを開いたままにする投票をしています。潜在的な重複は 'print'を特に言及していないので、現在の質問を開いたままにしておくインターネット検索クエリに関しては助けになります。 – kfx