帧对象
type PyFrameObject
Part of the Limited API (as an opaque struct).
用于描述帧对象的对象C结构体。
此结构体中无公有成员。
在 3.11 版更改: 此结构体的成员已从公有 C API 中移除。 请参阅 What’s New entry 了解详情。
可以使用函数 PyEval_GetFrame() 与 PyThreadState_GetFrame() 去获取一个帧对象。
可参考:Reflection 1
PyTypeObject PyFrame_Type
帧对象的类型。 它与 Python 层中的 types.FrameType 是同一对象。
在 3.11 版更改: 在之前版本中,此类型仅在包括 <frameobject.h>
之后可用。
int PyFrame_Check(PyObject *obj)
如果 obj 是一个帧对象则返回非零值。
在 3.11 版更改: 在之前版本中,只函数仅在包括 <frameobject.h>
之后可用。
PyFrameObject *PyFrame_GetBack(PyFrameObject *frame)
获取 frame 为下一个外部帧。
参考返回一个 strong reference,或者如果 frame 没有外部帧则返回 NULL
。
3.9 新版功能.
PyObject *PyFrame_GetBuiltins(PyFrameObject *frame)
获取 frame 的 f_builtins
属性。
返回一个 strong reference。 此结果不可为 NULL
。
3.11 新版功能.
PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)
Part of the Stable ABI since version 3.10.
获取 frame 的代码。
返回一个 strong reference。
结果(帧代码)不可为 NULL
。
3.9 新版功能.
PyObject *PyFrame_GetGenerator(PyFrameObject *frame)
获取拥有该帧的生成器、协程或异步生成器,或者如果该帧不被某个生成器所拥有则为 NULL
。 不会引发异常,即使其返回值为 NULL
。
返回一个 strong reference,或者 NULL
。
3.11 新版功能.
PyObject *PyFrame_GetGlobals(PyFrameObject *frame)
获取 frame 的 f_globals
属性。
返回一个 strong reference。 此结果不可为 NULL
。
3.11 新版功能.
int PyFrame_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, const char *name)
和 PyFrame_GetVar() 相似,但该变量名是一个使用 UTF-8 编码的 C 字符串。
3.12 新版功能.
PyObject *PyFrame_GetLocals(PyFrameObject *frame)
获取 frame 的 f_locals
属性 (dict)。
返回一个 strong reference。
3.11 新版功能.
int PyFrame_GetLineNumber(PyFrameObject *frame)
Part of the Stable ABI since version 3.10.
返回 frame 当前正在执行的行号。
内部帧
除非使用:pep:523,否则你不会需要它。
struct _PyInterpreterFrame
解释器的内部帧表示。
3.11 新版功能.
PyObject *PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame);
This is Unstable API. It may change without warning in minor releases.
返回一个指向帧的代码对象的 strong reference。
3.12 新版功能.
int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame);
This is Unstable API. It may change without warning in minor releases.
将字节偏移量返回到最后执行的指令中。
3.12 新版功能.
int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame);
This is Unstable API. It may change without warning in minor releases.
返回正在执行的指令的行数,如果没有行数,则返回-1。
3.12 新版功能.