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.
另請參閱Reflection。
- PyTypeObjectPyFrame_Type¶
The type of frame objects.It is the same object as
types.FrameTypein the Python layer.在 3.11 版的變更:Previously, this type was only available after including
<frameobject.h>.
- PyFrameObject*PyFrame_New(PyThreadState*tstate,PyCodeObject*code,PyObject*globals,PyObject*locals)¶
Create a new frame object. This function returns astrong referenceto the new frame object on success, and returns
NULLwith an exceptionset on failure.
- 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
NULLifframe 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
NULLif 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_localsattribute.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.
Legacy Local Variable APIs¶
These APIs aresoft deprecated. As of Python 3.13, they do nothing.They exist solely for backwards compatibility.
- voidPyFrame_LocalsToFast(PyFrameObject*f,intclear)¶
This function issoft deprecated and does nothing.
Prior to Python 3.13, this function would copy the
f_localsattribute off to the internal "fast" array of local variables, allowingchanges in frame objects to be visible to the interpreter. Ifclear wastrue, this function would process variables that were unset in the localsdictionary.在 3.13 版的變更:This function now does nothing.
- voidPyFrame_FastToLocals(PyFrameObject*f)¶
This function issoft deprecated and does nothing.
Prior to Python 3.13, this function would copy the internal "fast" arrayof local variables (which is used by the interpreter) to the
f_localsattribute off, allowing changes in localvariables to be visible to frame objects.在 3.13 版的變更:This function now does nothing.
- intPyFrame_FastToLocalsWithError(PyFrameObject*f)¶
This function issoft deprecated and does nothing.
Prior to Python 3.13, this function was similar to
PyFrame_FastToLocals(), but would return0on success, and-1with an exception set on failure.在 3.13 版的變更:This function now does nothing.
也參考
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 版被加入.