ホームページ >バックエンド開発 >Python チュートリアル >Python 組み込み関数 — コンパイル

Python 組み込み関数 — コンパイル

黄舟
黄舟オリジナル
2017-01-19 16:42:372285ブラウズ

Python 組み込み関数 - コンパイル

compilecompile(source, filename, mode[, flags[, dont_inherit,[optimize]]])
1 この関数は、文字列のソース コードをコンパイルするために使用されます。 result はバイトコードまたは AST (抽象構文ツリー) を生成できます。
バイトコードは関数 exec() を使用して実行でき、AST は eval() を使用してコンパイルできます。
2. パラメーターのソースは、文字列のソース コード、または AST オブジェクトの配列です。
3. パラメーター filename は、文字列を読み取るためのファイル オブジェクトです。
ソース コードがコンパイル用にファイルから読み取られない場合は、これらのコードを識別するためにここに文字列を入力できます。
4. パラメータモードは、表現されるソースコードのタイプを示すために使用されます。
exec タイプの場合は、これが実行可能なシーケンスステートメントであることを意味します。これは、実行可能な単一の式ステートメントです。 対応する値を計算するために使用されます。
単一タイプの場合、これは対話モードで実行される単一のステートメントであることを意味します。
この場合、それは式です。の場合、結果は通常、 None として出力されるのではなく、出力されます。
5. オプションのパラメーター flags と dont_inherit は、ソース コードのコンパイル時にフラグを制御するために使用されます。
これらのパラメーターと関連するコンパイル手順については、PEP236 ドキュメントを確認してください。
両方ともデフォルトのパラメータを使用する場合 (つまり、両方ともゼロ値)、
コンパイルのためにこの関数を呼び出す場合、主にコードで指定されたコンパイル機能を使用して処理されます
flags パラメータが値を持つように設定されている場合、ただし、dont_inherit が設定されていません (つまり、ゼロ値)。
コードをコンパイルすると、ソース コードのコンパイル機能だけでなく、フラグで指定された機能も機能します。これは、次の結合と同等です。 2 つ;
パラメータ dont_inherit が値を持つように設定されている場合 (つまり、ゼロ以外の値)、
ステートメントをコンパイルするとき、パラメータ フラグで指定されたコンパイル機能の値のみが有効になります。 、ソース コードで指定されている機能は使用されません。
コンパイル機能はビットマップ形式でパラメータに設定され、__future__ で表示できます。
6. オプションのパラメータ optimize は、コンパイラによって使用される最適化レベルを示すために使用されます。
デフォルト値は -1 で、コマンド ライン パラメータ -O で取得された最適化レベルが優先されます。が 0 (つまり、最適化は必要ありません。__debug__ が true に設定されます)、最適化はありません。
設定値が 1 の場合、assert ステートメントは削除され、__debug__ は false に設定されます。
設定値が 2 の場合、 、値を 1 に設定する関数に加えて、最良の最適化結果を達成するためにコード内のドキュメントも削除されます。
7. この関数はコードをコンパイルするときに、構文エラーがある場合は SyntaxError を返します。
コードに null バイトが含まれている場合は TypeError を返します。
注意:
1. 単一または eval タイプのコンパイルを使用する場合、
コードが複数行ある場合は、コードの各行の後に少なくとも 1 つの改行文字が必要です。そうしないと、コードのコンパイル時に不完全なソース コード エラーが表示されます。モジュール。
Python 3.2 バージョン以降、Windows または Mac の改行文字を入力できます。
2. 実行モードを使用する場合、このバージョン以降、各行の後に改行文字を入力する必要はありません。

In [16]: str = "for i in range(10): print(i)"
In [17]: c = compile(str,'','exec') #编译为字节代码对象
In [18]: exec(c)
0
1
2
3
4
5
6
7
8
9
In [19]: str = "3*x + 4*y"
In [20]: c = compile(str,'','eval') #编译为表达式
In [23]: x,y = 3,4
In [24]: eval(c)
Out[24]: 25

上記は Python の組み込み関数コンパイルの内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。

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