帧对象
******

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 新版功能.
