eval() 式を実行する

最終更新:2026-09-22

eval() 式を実行する

eval() は文字列中の Python 式を実行し、結果を返す。**セキュリティ警告**:信頼できない入力を eval で処理してはならない。

カテゴリ組み込み関数
種類組み込み関数
Python バージョンall

📝 構文

eval(expression[, globals[, locals]])

⚙️ 引数

expression 必須A Python expression string or code object.
globals 任意The global namespace dict.(デフォルト値:None)
locals 任意The local namespace dict.(デフォルト値:None)

戻り値:The result of evaluating the expression.

💥 例外

▶ 例

下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:

実行結果:

15
1024
⚠️ 警告 eval は任意のコードを実行できるため、本番環境では ast.literal_eval で代替すること。
さらに多くのケースは近日公開予定です。

❓ よくある質問

Qeval() と exec() の違いは何ですか?
Aeval() は単一の式だけを実行し、その結果を返します(例:eval('1 + 2') は 3)。exec() は文やコードブロック(if、for、def など)を実行し、None を返します。
Qeval('x = 1') はどうなりますか?
ASyntaxError になります。代入は文であって式ではないため、eval() は式を評価するだけです。文を実行したいなら exec() を使います。
Qなぜユーザー入力に eval を使うべきではないのですか?
Aeval() は任意のコードを実行できます。eval("__import__('os').system('dir')") のような文字列などです。ユーザー入力を解析するなら、リテラルだけを扱う ast.literal_eval を使ってください。
Qeval 内で外部で定義した変数を使えますか?
A既定では使えます(現在のグローバル/ローカル名前空間を使うため)。また globals/locals 引数でカスタム名前空間を渡し、式がアクセスできる名前を制限できます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%