Python関数compile()関数

巴扎黑
巴扎黑オリジナル
2017-08-18 13:51:003339ブラウズ

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 引数は次のとおりです。コードが読み取られたファイル; ファイルから読み込まれなかった場合は、認識可能な値を渡します (「98c455a79ddfebb79781bff588e7b37e」が一般的に使用されます)。

モード引数は、コンパイルできるコードの種類を指定します。ソースが一連のステートメントで構成されている場合は '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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。