Frame 物件

typePyFrameObject
受限 API 的一部分 (做為一個不透明結構 (opaque struct)).

用來描述 frame 物件的 C 結構。

在這個結構中沒有公開的成員。

在 3.11 版的變更:The members of this structure were removed from the public C API.Refer to theWhat's New entryfor details.

ThePyEval_GetFrame() andPyThreadState_GetFrame() functionscan be used to get a frame object.

See alsoReflection.

PyTypeObjectPyFrame_Type

The type of frame objects.It is the same object astypes.FrameType in the Python layer.

在 3.11 版的變更:Previously, this type was only available after including<frameobject.h>.

intPyFrame_Check(PyObject*obj)

Return non-zero ifobj is a frame object.

在 3.11 版的變更:Previously, this function was only available after including<frameobject.h>.

PyFrameObject*PyFrame_GetBack(PyFrameObject*frame)
回傳值:新的參照。

Get theframe next outer frame.

Return astrong reference, orNULL ifframe has no outerframe.

在 3.9 版被加入.

PyObject*PyFrame_GetBuiltins(PyFrameObject*frame)
回傳值:新的參照。

取得framef_builtins 屬性。

回傳strong reference。結果不能為NULL

在 3.11 版被加入.

PyCodeObject*PyFrame_GetCode(PyFrameObject*frame)
回傳值:新的參照。穩定 ABI 的一部分 自 3.10 版本開始.

Get theframe code.

回傳strong reference

The result (frame code) cannot beNULL.

在 3.9 版被加入.

PyObject*PyFrame_GetGenerator(PyFrameObject*frame)
回傳值:新的參照。

Get the generator, coroutine, or async generator that owns this frame,orNULL if this frame is not owned by a generator.Does not raise an exception, even if the return value isNULL.

回傳strong referenceNULL

在 3.11 版被加入.

PyObject*PyFrame_GetGlobals(PyFrameObject*frame)
回傳值:新的參照。

取得framef_globals 屬性。

回傳strong reference。結果不能為NULL

在 3.11 版被加入.

intPyFrame_GetLasti(PyFrameObject*frame)

取得framef_lasti 屬性。

如果frame.f_lastiNone 則回傳 -1。

在 3.11 版被加入.

PyObject*PyFrame_GetVar(PyFrameObject*frame,PyObject*name)
回傳值:新的參照。

取得frame 的變數name

  • 在成功時回傳變數值的strong reference

  • 如果變數不存在,則引發NameError 並回傳NULL

  • 在錯誤時引發例外並回傳NULL

name 的型別必須是str

在 3.12 版被加入.

PyObject*PyFrame_GetVarString(PyFrameObject*frame,constchar*name)
回傳值:新的參照。

Similar toPyFrame_GetVar(), but the variable name is a C stringencoded in UTF-8.

在 3.12 版被加入.

PyObject*PyFrame_GetLocals(PyFrameObject*frame)
回傳值:新的參照。

Get theframe'sf_locals attribute.If the frame refers to anoptimized scope, this returns awrite-through proxy object that allows modifying the locals.In all other cases (classes, modules,exec(),eval()) it returnsthe mapping representing the frame locals directly (as described forlocals()).

回傳strong reference

在 3.11 版被加入.

在 3.13 版的變更:As part ofPEP 667, return an instance ofPyFrameLocalsProxy_Type.

intPyFrame_GetLineNumber(PyFrameObject*frame)
穩定 ABI 的一部分 自 3.10 版本開始.

Return the line number thatframe is currently executing.

Frame Locals Proxies

在 3.13 版被加入.

Thef_locals attribute on aframe objectis an instance of a "frame-locals proxy". The proxy object exposes awrite-through view of the underlying locals dictionary for the frame. Thisensures that the variables exposed byf_locals are always up to date withthe live local variables in the frame itself.

SeePEP 667 for more information.

PyTypeObjectPyFrameLocalsProxy_Type

The type of framelocals() proxy objects.

intPyFrameLocalsProxy_Check(PyObject*obj)

Return non-zero ifobj is a framelocals() proxy.

Internal Frames

Unless usingPEP 523, you will not need this.

struct_PyInterpreterFrame

The interpreter's internal frame representation.

在 3.11 版被加入.

PyObject*PyUnstable_InterpreterFrame_GetCode(struct_PyInterpreterFrame*frame);
這是不穩定 API,它可能在小版本發布中沒有任何警告地被變更。

Return astrong reference to the code object for the frame.

在 3.12 版被加入.

intPyUnstable_InterpreterFrame_GetLasti(struct_PyInterpreterFrame*frame);
這是不穩定 API,它可能在小版本發布中沒有任何警告地被變更。

Return the byte offset into the last executed instruction.

在 3.12 版被加入.

intPyUnstable_InterpreterFrame_GetLine(struct_PyInterpreterFrame*frame);
這是不穩定 API,它可能在小版本發布中沒有任何警告地被變更。

Return the currently executing line number, or -1 if there is no line number.

在 3.12 版被加入.