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() の呼び出しによって評価されます。source は文字列または AST オブジェクトのいずれかになります。AST オブジェクトの操作方法については、ast モジュールのドキュメントを参照してください。
filename 引数は次のとおりです。コードが読み取られたファイル; ファイルから読み込まれなかった場合は、認識可能な値を渡します (「
モード引数は、コンパイルできるコードの種類を指定します。ソースが一連のステートメントで構成されている場合は 'exec'、単一の式で構成されている場合は 'eval'、単一の対話型ステートメントで構成されている場合は 'single' になります (後者の場合、式ステートメントは他のものに評価されます)。何も出力されません)。
オプションの引数 flags と dont_inherit は、ソースのコンパイルに影響を与える将来のステートメント (PEP 236 を参照) を制御します。どちらも存在しない場合 (または両方がゼロの場合)、コードは、将来のステートメントでコンパイルされます。 flags 引数が指定されていて、dont_inherit が指定されていない (またはゼロである) 場合、dont_inherit が非である場合に使用されるステートメントに加えて、flags 引数で指定された将来のステートメントが使用されます。 -zero integer の場合、フラグ引数はそれです – コンパイルの呼び出しの周囲で有効な将来のステートメントは無視されます。
将来のステートメントは、ビットごとに 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
以上がPython関数compile()関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。