コードオブジェクト¶
コードオブジェクト(Code objects)は CPython 実装の低レベルな詳細部分です。各オブジェクトは関数に束縛されていない実行可能コードの塊を表現しています。
-
type
PyCodeObject
¶ コードオブジェクトを表現するために利用されるC構造体。この型のフィールドは何時でも変更され得ます。
-
PyTypeObject
PyCode_Type
¶ これは Python の
code
型を表現するPyTypeObject
のインスタンスです。
-
int
PyCode_GetNumFree
(PyCodeObject *co)¶ co 内の自由変数(free variables)の数を返します。
-
PyCodeObject *
PyCode_New
(int argcount, int kwonlyargcount, int nlocals, int stacksize, int flags, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *freevars, PyObject *cellvars, PyObject *filename, PyObject *name, int firstlineno, PyObject *lnotab)¶ - Return value: New reference.
新しいコードオブジェクトを返します。フレームを作成するためにダミーのコードオブジェクトが必要な場合は、代わりに
PyCode_NewEmpty()
を利用してください。バイトコードは頻繁に変更されるため、PyCode_New()
を直接呼び出すと、 Python の詳細バージョンに依存してしまうことがあります。
-
PyCodeObject *
PyCode_NewWithPosOnlyArgs
(int argcount, int posonlyargcount, int kwonlyargcount, int nlocals, int stacksize, int flags, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *freevars, PyObject *cellvars, PyObject *filename, PyObject *name, int firstlineno, PyObject *lnotab)¶ - Return value: New reference.
PyCode_New()
に似ていますが、位置専用引数のための "posonlyargcount" が追加されています。バージョン 3.8 で追加.
-
PyCodeObject *
PyCode_NewEmpty
(const char *filename, const char *funcname, int firstlineno)¶ - Return value: New reference.
新しい空のコードオブジェクトを、指定されたファイル名、関数名、開始行番号で作成します。返されたコードオブジェクトに対しての
exec()
やeval()
は許されていません。
-
int
PyCode_Addr2Line
(PyCodeObject *co, int byte_offset)¶ Return the line number of the instruction that occurs on or before
byte_offset
and ends after it. If you just need the line number of a frame, usePyFrame_GetLineNumber()
instead.For efficiently iterating over the line numbers in a code object, use the API described in PEP 626.