私が読んでいる Python の本には、次のようなコードが繰り返し出てきますeval(input('blah'))
。
これは、呼び出しの結果をどのように変更するのでしょうかinput
?
参照: 「eval」を使用するのはなぜ悪い習慣なのでしょうか?信頼できない入力(つまり、プログラムの制御ではなく、ユーザーの制御下にあるもの)を使用することによって、または信頼できない入力によって生じる重大なセキュリティ リスクを理解する。eval
exec
参照: 純粋な Python で Python をサンドボックス化するにはどうすればよいですか?eval
簡単に言うと、これを適切に行うことは、 または の代わりに適切なツールを選択することよりも常に困難ですexec
。
見るPython の eval() と ast.literal_eval() の使用より安全な技術になる可能性がある。
見るPython 3 で raw_input を使用するにはどうすればよいですか?なぜ本にこのようなコードが含まれていたのか、またはなぜ OP は当初、input
結果にそれ以上の処理が必要ないと予想していたのかについての背景コンテキスト。
ベストアンサー1
eval 関数を使用すると、Python プログラム内で Python コードを実行できます。
eval の例 (対話型シェル):
>>> x = 1
>>> eval('x + 1')
2
>>> eval('x')
1