compile() ソースコードをコードオブジェクトにコンパイルする

最終更新:2026-09-22

compile() ソースコードをコードオブジェクトにコンパイルする

compile() はソースコード文字列をコードオブジェクトにコンパイルし、exec() / eval() に渡して実行できる。

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

📝 構文

compile(source, filename, mode)

⚙️ 引数

source 必須Source code: a string, bytes, or AST object.
filename 必須Filename shown in error messages; pass '' for inline source.
mode 必須Compilation mode: 'exec', 'eval', or 'single'.
flags 任意Compiler flags, e.g. ast.PyCF_ONLY_AST.(デフォルト値:0)
dont_inherit 任意Whether to ignore surrounding compile flags.(デフォルト値:False)
optimize 任意Optimization level; -1 uses the interpreter's setting.(デフォルト値:-1)

戻り値:A code object executable by exec() / eval().

💥 例外

▶ 例

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

実行結果:

3
さらに多くのケースは近日公開予定です。

❓ よくある質問

Qcompile() の3つの mode の違いは何ですか?
A'exec' は文ブロック(if、def、for など)をコンパイルします。'eval' は単一の式(値を評価できるもの)をコンパイルします。'single' は単一の対話的文をコンパイルし、式の結果を表示します。
Qfilename 引数には何を渡しますか?
A動的に生成したインラインコードでは、慣例として '' を渡します。これはエラーメッセージ(トレースバック)にだけ現れ、実際のファイルとは無関係です。実際にファイルを読み取ることはありません。
Qcompile() の後、結果をどう実行しますか?
A返された code オブジェクトを exec(code) または eval(code) に渡します。'exec' モードでコンパイルしたコードは exec で、'eval' モードのものは eval で実行します。
Qソースに構文エラーがあるとどうなりますか?
Acompile() の段階で SyntaxError が投げられます。文字列を直接 exec するよりも早く問題を検出できるため、「先にコンパイル検証、後から実行」の場面に適しています。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%