exec() コードブロックを実行する
最終更新:2026-09-22
exec() コードブロックを実行する
exec() は文字列中の Python コード(文またはコードブロック)を実行し、値を返さない。
| カテゴリ | 組み込み関数 |
|---|---|
| 種類 | 組み込み関数 |
| Python バージョン | all |
📝 構文
exec(code[, globals[, locals]])
⚙️ 引数
| code 必須 | Code to execute: a string, bytes, or code object. |
|---|---|
| globals 任意 | The global namespace dict.(デフォルト値:None) |
| locals 任意 | The local namespace dict.(デフォルト値:None) |
戻り値:None; statements in the code take effect in the caller.
💥 例外
SyntaxError— Raised when the code has a syntax error.TypeError— Raised when code has an invalid type or globals/locals is not a dict.
▶ 例
下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:
実行結果:
6
y = 6
🏷️ 関連する組み込み関数
💡 関連するケース
さらに多くのケースは近日公開予定です。
❓ よくある質問
Qexec('y = 1') の後、y を直接使えますか?
Aモジュールのトップレベルでは使えます。ただし関数の内部では使えません。exec 内の代入は関数のローカル変数には書き込まれません。安全な方法は exec(code, ns) を使い、後で ns 辞書から読み出すことです。
Qexec() に戻り値はありますか?
Aありません。常に None を返します。実行結果は名前空間辞書から読み取ります。例:exec('y = x * 2', ns) の後、ns['y'] で取得します。
Qexec() と eval() はいつ使い分けますか?
A複数行の文の実行や関数の定義には exec を、単一の式の評価には eval を使います。両者のセキュリティ警告は同じです——信頼できない入力を実行してはいけません。
Qexec の globals 引数はどう使いますか?
Aexec(code, {'x': 3}) のようにすると、コードを指定した名前空間の中だけで実行し、外部環境を汚染しません。実行環境を分離する一般的な手法です。