帧对象¶
-
类型 PyFrameObject¶
- 属于 有限 API 的一部分(作为不透明的结构体)。
用于描述帧对象的 C 结构。
此结构中没有公共成员。
在 3.11 版本中更改:此结构的成员已从公共 C API 中移除。有关详细信息,请参阅 新增功能条目。
可以使用 PyEval_GetFrame()
和 PyThreadState_GetFrame()
函数来获取帧对象。
另请参阅 反射。
-
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* 的下一个外部帧。
返回一个 强引用,如果 *frame* 没有外部帧,则返回
NULL
。在 3.9 版本中添加。
-
PyObject *PyFrame_GetBuiltins(PyFrameObject *frame)¶
- 返回值:新的引用。
获取 *frame* 的
f_builtins
属性。返回一个 强引用。结果不能为
NULL
。在 3.11 版本中添加。
-
PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)¶
- 返回值:新的引用。自从 3.10 版本以来,属于 稳定 ABI 的一部分。
获取 *frame* 代码。
返回一个 强引用。
结果(帧代码)不能为
NULL
。在 3.9 版本中添加。
-
PyObject *PyFrame_GetGenerator(PyFrameObject *frame)¶
- 返回值:新的引用。
获取拥有此帧的生成器、协程或异步生成器,如果此帧不属于任何生成器,则返回
NULL
。即使返回值为NULL
,也不会引发异常。返回一个 强引用,或
NULL
。在 3.11 版本中添加。
-
PyObject *PyFrame_GetGlobals(PyFrameObject *frame)¶
- 返回值:新的引用。
获取 *frame* 的
f_globals
属性。返回一个 强引用。结果不能为
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*。
*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
属性。如果帧引用一个 优化作用域,则返回一个允许修改局部变量的直写代理对象。在所有其他情况下(类、模块、exec()
、eval()
),它直接返回表示帧局部变量的映射(如locals()
所述)。返回一个 强引用。
在 3.11 版本中添加。
在 3.13 版本中更改:作为 PEP 667 的一部分,返回
PyFrameLocalsProxy_Type
的一个实例。
-
int PyFrame_GetLineNumber(PyFrameObject *frame)¶
- 自 3.10 版本起,属于稳定 ABI 的一部分。
返回frame当前正在执行的行号。
帧局部变量代理¶
在 3.13 版本中添加。
f_locals
属性在 frame 对象上是一个“帧局部变量代理”的实例。该代理对象暴露了帧底层局部变量字典的直写视图。这确保了f_locals
暴露的变量始终与帧本身中的实时局部变量保持同步。
更多信息请参阅PEP 667。
-
PyTypeObject PyFrameLocalsProxy_Type¶
帧
locals()
代理对象的类型。
内部帧¶
除非使用 PEP 523,否则您不需要这个。
-
struct _PyInterpreterFrame¶
解释器的内部帧表示。
在 3.11 版本中添加。
-
PyObject *PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame);¶
- 这是不稳定的 API。它可能会在次要版本中更改,恕不另行通知。
返回对帧的代码对象的强引用。
在 3.12 版本中添加。
-
int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame);¶
- 这是不稳定的 API。它可能会在次要版本中更改,恕不另行通知。
返回最后执行的指令的字节偏移量。
在 3.12 版本中添加。
-
int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame);¶
- 这是不稳定的 API。它可能会在次要版本中更改,恕不另行通知。
返回当前正在执行的行号,如果没有行号,则返回 -1。
在 3.12 版本中添加。