ホームページ >バックエンド開発 >Python チュートリアル >Python関数 - コンパイル()
compile(source, filename, mode[, flags[, dont_inherit]])
中国語の説明: ソースをコードまたは AST オブジェクトにコンパイルします。コード オブジェクトは、exec ステートメントを介して実行することも、eval() を使用して評価することもできます。
パラメータソース: 文字列またはAST (抽象構文ツリー) オブジェクト。
パラメータ filename: コード ファイル名。コードがファイルから読み込まれない場合は、識別可能な値を渡します。
パラメータモデル: コンパイルされたコードのタイプを指定します。 「exec」、「eval」、「single」として指定できます。
パラメータ flag と dont_inherit: これら 2 つのパラメータはまだ導入されておらず、オプションのパラメータです。
バージョン: python2.3, 2.6, 2.7, 3.2で異なります、python3と互換性がありますのでご注意ください
英語の説明:
ソースをコードまたはASTコードにコンパイルします。オブジェクトは exec ステートメントによって実行することも、eval() の呼び出しによって評価することもできます。ソースは文字列または AST オブジェクトのいずれかにすることができます。AST オブジェクトの操作方法については、ast モジュールのドキュメントを参照してください。
ファイル名引数コードが読み取られたファイルを指定する必要があります。ファイルから読み込まれなかった場合は、認識可能な値を渡します ('
モード引数は、コンパイルできるコードの種類を指定します。ソースが一連のステートメントで構成されている場合は 'exec'、単一の式で構成されている場合は 'eval'、単一の対話型ステートメントで構成されている場合は 'single' (後者の場合、None 以外に評価される式ステートメント)オプションの引数 flags と dont_inherit は、ソースのコンパイルに影響を与える将来のステートメント (PEP 236 を参照) を制御します。どちらも存在しない場合 (または両方がゼロの場合)、コードは有効な将来のステートメントでコンパイルされます。コンパイルを呼び出すコード内で flags 引数が指定され、dont_inherit が指定されていない (またはゼロである) 場合、dont_inherit が - でない場合に使用されるステートメントに加えて、flags 引数で指定された将来のステートメントが使用されます。整数が 0 の場合、フラグ引数はそれです – コンパイルの呼び出しの周囲で有効な将来のステートメントは無視されます。
将来のステートメントは、ビットごとに OR して複数のステートメントを指定できます。 __future__ モジュールの _Feature インスタンスの Compiler_flag 属性として見つかります。
この関数は、コンパイルされたソースが無効な場合は SyntaxError を発生させ、ソースに null バイトが含まれている場合は TypeError を発生させます。
注: 複数行のコードを含む文字列をコンパイルする場合は、 「single」または「eval」モードでは、入力は少なくとも 1 つの改行文字で終了する必要があります。これは、コード モジュール内の不完全なステートメントと完全なステートメントの検出を容易にするためです。
バージョン 2.3 での変更点: flags と dont_inherit 引数が追加されました。
バージョン 2.6 で変更: AST オブジェクトのコンパイルのサポート。
バージョン 2.7 で変更: Windows および Mac の改行の使用が許可されました。また、「exec」モードでの入力は改行で終わる必要がなくなりました。
コード例:
>>> code = "for i in range(0, 10): print i" >>> cmpcode = compile(code, '', 'exec') >>> exec cmpcode 0 1 2 3 4 5 6 7 8 9 >>> str = "3 * 4 + 5" >>> a = compile(str,'','eval') >>> eval(a) 17