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 as
types.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, or
NULL
ifframe has no outerframe.在 3.9 版被加入.
- PyObject*PyFrame_GetBuiltins(PyFrameObject*frame)¶
- 回傳值:新的參照。
取得frame 的
f_builtins
屬性。回傳strong reference。結果不能為
NULL
。在 3.11 版被加入.
- PyCodeObject*PyFrame_GetCode(PyFrameObject*frame)¶
- 回傳值:新的參照。 為穩定 ABI 的一部分 自 3.10 版本開始.
Get theframe code.
The result (frame code) cannot be
NULL
.在 3.9 版被加入.
- PyObject*PyFrame_GetGenerator(PyFrameObject*frame)¶
- 回傳值:新的參照。
Get the generator, coroutine, or async generator that owns this frame,or
NULL
if this frame is not owned by a generator.Does not raise an exception, even if the return value isNULL
.回傳strong reference 或
NULL
。在 3.11 版被加入.
- PyObject*PyFrame_GetGlobals(PyFrameObject*frame)¶
- 回傳值:新的參照。
取得frame 的
f_globals
屬性。回傳strong reference。結果不能為
NULL
。在 3.11 版被加入.
- intPyFrame_GetLasti(PyFrameObject*frame)¶
取得frame 的
f_lasti
屬性。如果
frame.f_lasti
是None
則回傳 -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 to
PyFrame_GetVar()
, but the variable name is a C stringencoded in UTF-8.在 3.12 版被加入.
- PyObject*PyFrame_GetLocals(PyFrameObject*frame)¶
- 回傳值:新的參照。
Get theframe's
f_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()
).在 3.11 版被加入.
在 3.13 版的變更:As part ofPEP 667, return an instance of
PyFrameLocalsProxy_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 frame
locals()
proxy objects.
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 版被加入.