非常に高レベルのレイヤー—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/c-api/veryhigh
移動先:案内検索

非常に高レベルのレイヤー

この章の関数を使用すると、ファイルまたはバッファーで指定されたPythonソースコードを実行できますが、インタープリターとより詳細に対話することはできません。

これらの関数のいくつかは、パラメーターとして文法からの開始記号を受け入れます。 使用可能な開始記号は、Py_eval_inputPy_file_input、およびPy_single_inputです。 これらは、パラメータとして受け入れる関数に従って説明されています。

これらの関数のいくつかはFILE*パラメーターを受け取ることにも注意してください。 注意深く処理する必要がある特定の問題の1つは、異なるCライブラリのFILE構造が異なり、互換性がない可能性があることです。 Windowsでは(少なくとも)、動的にリンクされた拡張機能が実際に異なるライブラリを使用する可能性があるため、FILE*パラメータは、同じものによって作成されたことが確実な場合にのみ、これらの関数に渡されるように注意する必要があります。 Pythonランタイムが使用しているライブラリ。

int Py_Main(int argc, char **argv)

標準インタプリタのメインプログラム。 これは、Pythonを組み込んだプログラムで利用できるようになります。 argc および argv パラメーターは、Cプログラムのmain()関数に渡されるパラメーターとまったく同じように準備する必要があります。 引数リストは変更される可能性があることに注意することが重要です(ただし、引数リストが指す文字列の内容は変更されません)。 戻り値は、インタープリターが正常に終了する場合(つまり、例外なし)は0、インタープリターが例外のために終了する場合は1、パラメーターリストの場合は2になります。有効なPythonコマンドラインを表していません。

他の方法で処理されないSystemExitが発生した場合、この関数は1を返しませんが、Py_InspectFlagが設定されていない限り、プロセスを終了します。

int PyRun_AnyFile(FILE *fp, const char *filename)
これは、以下の PyRun_AnyFileExFlags()への簡略化されたインターフェイスであり、 closeit0に設定され、 flagsNULL に設定されたままです。 。
int PyRun_AnyFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
これは、以下の PyRun_AnyFileExFlags()への簡略化されたインターフェイスであり、 closeit 引数は0に設定されたままです。
int PyRun_AnyFileEx(FILE *fp, const char *filename, int closeit)
これは、以下の PyRun_AnyFileExFlags()への簡略化されたインターフェイスであり、 flags 引数は NULL に設定されたままです。
int PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)
fp がインタラクティブデバイス(コンソールまたは端末入力またはUnix疑似端末)に関連付けられたファイルを参照している場合は、 PyRun_InteractiveLoop()の値を返します。それ以外の場合は、の結果を返します。 ] PyRun_SimpleFile()ファイル名NULL の場合、この関数はファイル名として"???"を使用します。
int PyRun_SimpleString(const char *command)
これは、以下の PyRun_SimpleStringFlags()への簡略化されたインターフェイスであり、 PyCompilerFlags * 引数はNULLに設定されたままです。
int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)

flags 引数に従って、 __ main __ モジュールのコマンドからPythonソースコードを実行します。 __ main __ がまだ存在しない場合は、作成されます。 成功した場合は0を返し、例外が発生した場合は-1を返します。 エラーが発生した場合、例外情報を取得する方法はありません。 フラグの意味については、以下を参照してください。

他の方法で処理されないSystemExitが発生した場合、この関数は-1を返しませんが、Py_InspectFlagが設定されていない限り、プロセスを終了します。

int PyRun_SimpleFile(FILE *fp, const char *filename)
これは、以下の PyRun_SimpleFileExFlags()への簡略化されたインターフェイスであり、 closeit0に設定され、 flagsNULL に設定されたままです。 。
int PyRun_SimpleFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
これは、以下の PyRun_SimpleFileExFlags()への簡略化されたインターフェイスであり、 closeit0に設定されたままです。
int PyRun_SimpleFileEx(FILE *fp, const char *filename, int closeit)
これは、以下の PyRun_SimpleFileExFlags()への簡略化されたインターフェイスであり、フラグNULL に設定されたままです。
int PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)
PyRun_SimpleStringFlags()に似ていますが、Pythonソースコードはメモリ内の文字列ではなく fp から読み取られます。 filename はファイルの名前である必要があります。 closeit がtrueの場合、PyRun_SimpleFileExFlagsが戻る前にファイルが閉じられます。
int PyRun_InteractiveOne(FILE *fp, const char *filename)
これは、以下の PyRun_InteractiveOneFlags()への簡略化されたインターフェイスであり、フラグNULL に設定されたままです。
int PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
flags 引数に従って、対話型デバイスに関連付けられたファイルから単一のステートメントを読み取って実行します。 sys.ps1およびsys.ps2を使用してユーザーにプロンプトが表示されます。 入力が正常に実行された場合は0を返し、例外があった場合は-1を返し、解析があった場合はerrcode.hインクルードファイルからのエラーコードを返します。エラー。 (errcode.hPython.hに含まれていないため、必要に応じて具体的に含める必要があります。)
int PyRun_InteractiveLoop(FILE *fp, const char *filename)
これは、以下の PyRun_InteractiveLoopFlags()への簡略化されたインターフェイスであり、フラグNULL に設定されたままです。
int PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
EOFに達するまで、対話型デバイスに関連付けられたファイルからステートメントを読み取って実行します。 sys.ps1およびsys.ps2を使用してユーザーにプロンプトが表示されます。 EOFで0を返します。
struct _node *PyParser_SimpleParseString(const char *str, int start)
これは、以下の PyParser_SimpleParseStringFlagsFilename()への簡略化されたインターフェイスであり、 filenameNULL に設定され、 flags0に設定されます。 。
struct _node *PyParser_SimpleParseStringFlags(const char *str, int start, int flags)
これは、以下の PyParser_SimpleParseStringFlagsFilename()への簡略化されたインターフェイスであり、 filenameNULL に設定されたままです。
struct _node *PyParser_SimpleParseStringFlagsFilename(const char *str, const char *filename, int start, int flags)
flags 引数に従って、開始トークン start を使用して、 str からPythonソースコードを解析します。 その結果を使用して、効率的に評価できるコードオブジェクトを作成できます。 これは、コードフラグメントを何度も評価する必要がある場合に役立ちます。
struct _node *PyParser_SimpleParseFile(FILE *fp, const char *filename, int start)
これは、以下の PyParser_SimpleParseFileFlags()への簡略化されたインターフェイスであり、フラグ0に設定されたままです。
struct _node *PyParser_SimpleParseFileFlags(FILE *fp, const char *filename, int start, int flags)
PyParser_SimpleParseStringFlagsFilename()に似ていますが、Pythonソースコードはメモリ内の文字列ではなく fp から読み取られます。
PyObject *PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals)
これは、以下の PyRun_StringFlags()への簡略化されたインターフェイスであり、フラグNULL に設定されたままです。
PyObject *PyRun_StringFlags(const char *str, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)

辞書 globals および locals で指定されたコンテキストで、 flags で指定されたコンパイラフラグを使用して、 str からPythonソースコードを実行します。 パラメータ start は、ソースコードの解析に使用する必要がある開始トークンを指定します。

コードをPythonオブジェクトとして実行した結果を返します。例外が発生した場合は、 NULL を返します。

PyObject *PyRun_File(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals)
これは、以下の PyRun_FileExFlags()への簡略化されたインターフェイスであり、 closeit0に設定され、 flagsNULL に設定されたままです。 。
PyObject *PyRun_FileEx(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit)
これは、以下の PyRun_FileExFlags()への簡略化されたインターフェイスであり、フラグNULL に設定されたままです。
PyObject *PyRun_FileFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)
これは、以下の PyRun_FileExFlags()への簡略化されたインターフェイスであり、 closeit0に設定されたままです。
PyObject *PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit, PyCompilerFlags *flags)
PyRun_StringFlags()に似ていますが、Pythonソースコードはメモリ内の文字列ではなく fp から読み取られます。 filename はファイルの名前である必要があります。 closeit がtrueの場合、 PyRun_FileExFlags()が戻る前にファイルが閉じられます。
PyObject *Py_CompileString(const char *str, const char *filename, int start)
これは、以下の Py_CompileStringFlags()への簡略化されたインターフェイスであり、フラグNULL に設定されたままです。
PyObject *Py_CompileStringFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags)
str のPythonソースコードを解析してコンパイルし、結果のコードオブジェクトを返します。 開始トークンは start で指定されます。 これは、コンパイル可能なコードを制約するために使用でき、Py_eval_inputPy_file_input、またはPy_single_inputである必要があります。 filename で指定されたファイル名は、コードオブジェクトの作成に使用され、トレースバックまたはSyntaxError例外メッセージに表示される場合があります。 コードを解析またはコンパイルできない場合、これは NULL を返します。
PyObject *PyEval_EvalCode(PyCodeObject *co, PyObject *globals, PyObject *locals)
これは、 PyEval_EvalCodeEx()への簡略化されたインターフェイスであり、コードオブジェクトと、グローバル変数とローカル変数のディクショナリのみが含まれています。 他の引数は NULL に設定されます。
PyObject *PyEval_EvalCodeEx(PyCodeObject *co, PyObject *globals, PyObject *locals, PyObject **args, int argcount, PyObject **kws, int kwcount, PyObject **defs, int defcount, PyObject *closure)
評価のための特定の環境を前提として、プリコンパイルされたコードオブジェクトを評価します。 この環境は、グローバル変数とローカル変数の辞書、引数の配列、キーワードとデフォルト、およびセルのクロージャタプルで構成されています。
PyObject *PyEval_EvalFrame(PyFrameObject *f)
実行フレームを評価します。 これは、下位互換性のために、PyEval_EvalFrameExへの簡略化されたインターフェイスです。
PyObject *PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
これは、Python解釈の主要な未塗装の関数です。 文字通り2000行の長さです。 実行フレーム f に関連付けられたコードオブジェクトが実行され、バイトコードを解釈し、必要に応じて呼び出しを実行します。 追加の throwflag パラメーターは、ほとんど無視できます。trueの場合、例外がすぐにスローされます。 これは、ジェネレータオブジェクトの throw()メソッドに使用されます。
int PyEval_MergeCompilerFlags(PyCompilerFlags *cf)
この関数は、現在の評価フレームのフラグを変更し、成功した場合はtrueを返し、失敗した場合はfalseを返します。
int Py_eval_input
分離された式のPython文法からの開始記号。 Py_CompileString()で使用します。
int Py_file_input
ファイルまたは他のソースから読み取られた一連のステートメントのPython文法からの開始記号。 Py_CompileString()で使用します。 これは、任意の長さのPythonソースコードをコンパイルするときに使用するシンボルです。
int Py_single_input
単一のステートメントのPython文法からの開始記号。 Py_CompileString()で使用します。 これは、インタラクティブインタプリタループに使用される記号です。
struct PyCompilerFlags

これは、コンパイラフラグを保持するために使用される構造です。 コードがコンパイルされているだけの場合はint flagsとして渡され、コードが実行されている場合はPyCompilerFlags *flagsとして渡されます。 この場合、from __future__ importフラグを変更できます。

PyCompilerFlags *flagsNULL の場合は常に、cf_flags0と等しいものとして扱われ、from __future__ importによる変更はすべて破棄されます。

struct PyCompilerFlags {
    int cf_flags;
}
int CO_FUTURE_DIVISION
このビットをフラグに設定すると、除算演算子/ PEP 238 に従って「真の除算」として解釈されます。