Frame objects¶
-
type PyFrameObject¶
- 次に属します: Limited API (不透明な構造体として).
フレームオブジェクトを記述する際に用いられる、オブジェクトを表す C 構造体です。
この構造体には公開メンバはありません。
バージョン 3.11 で変更: この構造体のメンバは公開 C API から削除されました。 詳細は What's New の該当項目 を参照してください。
フレームオブジェクトは PyEval_GetFrame() と PyThreadState_GetFrame() 関数で取得できます。
リフレクション も参照してください。
-
PyTypeObject PyFrame_Type¶
フレームオブジェクトの型です。 Python レベルの
types.FrameTypeと同じオブジェクトです。バージョン 3.11 で変更: 以前は、この型を使うには
<frameobject.h>をインクルードする必要がありました。
-
PyFrameObject *PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals, PyObject *locals)¶
Create a new frame object. This function returns a strong reference to the new frame object on success, and returns
NULLwith an exception set on failure.
-
int PyFrame_Check(PyObject *obj)¶
objがフレームオブジェクトの場合に非ゼロを返します。バージョン 3.11 で変更: 以前は、この関数を使うには
<frameobject.h>をインクルードする必要がありました。
-
PyFrameObject *PyFrame_GetBack(PyFrameObject *frame)¶
- 戻り値: 新しい参照。
frameの一つ外側のフレームを取得します。Return a strong reference, or
NULLif frame has no outer frame. This raises no exceptions.Added in version 3.9.
-
PyObject *PyFrame_GetBuiltins(PyFrameObject *frame)¶
- 戻り値: 新しい参照。
frameのf_builtins属性を取得します。強参照 を返します。 結果が
NULLになることはありません。Added in version 3.11.
-
PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI (バージョン 3.10 より).
frameのコードを取得します。強参照 を返します。
結果 (フレームのコード) が
NULLになることはありません。Added in version 3.9.
-
PyObject *PyFrame_GetGenerator(PyFrameObject *frame)¶
- 戻り値: 新しい参照。
このフレームを所有するジェネレータ、コルーチン、非同期ジェネレータを取得します。 ジェネレータに所有されていない場合は
NULLを返します。 戻り値がNULLであっても例外は送出しません。強参照 または
NULLを返します。Added in version 3.11.
-
PyObject *PyFrame_GetGlobals(PyFrameObject *frame)¶
- 戻り値: 新しい参照。
frameのf_globals属性を取得します。強参照 を返します。 結果が
NULLになることはありません。Added in version 3.11.
-
int PyFrame_GetLasti(PyFrameObject *frame)¶
frameのf_lasti属性を取得します。Returns -1 if
frame.f_lastiisNone.Added in version 3.11.
-
PyObject *PyFrame_GetVar(PyFrameObject *frame, PyObject *name)¶
- 戻り値: 新しい参照。
frameの変数nameを取得します。nameの型はstrでなければなりません。Added in version 3.12.
-
PyObject *PyFrame_GetVarString(PyFrameObject *frame, const char *name)¶
- 戻り値: 新しい参照。
PyFrame_GetVar()と同様ですが、変数名は UTF-8 でエンコードした C 文字列です。Added in version 3.12.
-
PyObject *PyFrame_GetLocals(PyFrameObject *frame)¶
- 戻り値: 新しい参照。
frameのf_locals属性を取得します。 フレームが 最適化されたスコープ を参照する場合、ローカル変数の変更を可能にする、書き込みを反映するプロキシオブジェクトを返します。 それ以外の場合 (クラス、モジュール、exec()、eval()) は、フレームのローカル変数を表すマッピングを直接返します (locals()の説明を参照)。強参照 を返します。
Added in version 3.11.
バージョン 3.13 で変更: As part of PEP 667, return an instance of
PyFrameLocalsProxy_Type.
-
int PyFrame_GetLineNumber(PyFrameObject *frame)¶
- 次に属します: Stable ABI (バージョン 3.10 より).
frame が現在実行している行番号を返します。
Frame locals proxies¶
Added in version 3.13.
The f_locals attribute on a frame object
is an instance of a "frame-locals proxy". The proxy object exposes a
write-through view of the underlying locals dictionary for the frame. This
ensures that the variables exposed by f_locals are always up to date with
the live local variables in the frame itself.
詳細は PEP 667 を参照してください。
-
PyTypeObject PyFrameLocalsProxy_Type¶
フレームの
locals()プロキシオブジェクトの型。
Legacy local variable APIs¶
These APIs are soft deprecated. As of Python 3.13, they do nothing. They exist solely for backwards compatibility.
-
void PyFrame_LocalsToFast(PyFrameObject *f, int clear)¶
Prior to Python 3.13, this function would copy the
f_localsattribute of f to the internal "fast" array of local variables, allowing changes in frame objects to be visible to the interpreter. If clear was true, this function would process variables that were unset in the locals dictionary.Soft deprecated since version 3.13: This function now does nothing.
-
void PyFrame_FastToLocals(PyFrameObject *f)¶
Prior to Python 3.13, this function would copy the internal "fast" array of local variables (which is used by the interpreter) to the
f_localsattribute of f, allowing changes in local variables to be visible to frame objects.Soft deprecated since version 3.13: This function now does nothing.
-
int PyFrame_FastToLocalsWithError(PyFrameObject *f)¶
Prior to Python 3.13, this function was similar to
PyFrame_FastToLocals(), but would return0on success, and-1with an exception set on failure.Soft deprecated since version 3.13: This function now does nothing.
参考
Internal frames¶
PEP 523 を使わない限り、これは必要ありません。
-
struct _PyInterpreterFrame¶
インタープリタ内部でのフレーム表現。
Added in version 3.11.
-
PyObject *PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame);¶
- これは Unstable APIです。マイナーリリースで予告なく変更されることがあります。
フレームのコードオブジェクトへの 強参照 を返します。
Added in version 3.12.
-
int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame);¶
- これは Unstable APIです。マイナーリリースで予告なく変更されることがあります。
最後に実行した命令のバイトオフセットを返します。
Added in version 3.12.
-
int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame);¶
- これは Unstable APIです。マイナーリリースで予告なく変更されることがあります。
現在実行している行の番号を返します。 行番号がない場合は -1 を返します。
Added in version 3.12.
-
const PyTypeObject *PyUnstable_ExecutableKinds¶
- これは Unstable APIです。マイナーリリースで予告なく変更されることがあります。
An array of executable kinds (executor types) for frames, used for internal debugging and tracing.
Tools like debuggers and profilers can use this to identify the type of execution context associated with a frame (such as to filter out internal frames). The entries are indexed by the following constants:
Constant
Description
-
PyUnstable_EXECUTABLE_KIND_SKIP¶
- これは Unstable APIです。マイナーリリースで予告なく変更されることがあります。
The frame is internal (For example: inlined) and should be skipped by tools.
-
PyUnstable_EXECUTABLE_KIND_PY_FUNCTION¶
- これは Unstable APIです。マイナーリリースで予告なく変更されることがあります。
The frame corresponds to a standard Python function.
-
PyUnstable_EXECUTABLE_KIND_BUILTIN_FUNCTION¶
- これは Unstable APIです。マイナーリリースで予告なく変更されることがあります。
The frame corresponds to a function defined in native code.
-
PyUnstable_EXECUTABLE_KIND_METHOD_DESCRIPTOR¶
- これは Unstable APIです。マイナーリリースで予告なく変更されることがあります。
The frame corresponds to a method on a class instance.
Note that reading the executable kind from a frame is currently only possible with undocumented internal APIs.
Added in version 3.13.
-
PyUnstable_EXECUTABLE_KIND_SKIP¶
-
PyUnstable_EXECUTABLE_KINDS¶
- これは Unstable APIです。マイナーリリースで予告なく変更されることがあります。
The number of entries in
PyUnstable_ExecutableKinds.Added in version 3.13.