# Frame Objects

type PyFrameObject
  Part of the Limited API (as an opaque struct).

  The C structure of the objects used to describe frame objects.

  There are no public members in this structure.

  Changed in version 3.11: The members of this structure were removed from the public C API. Refer to the What’s New entry for details.

The `PyEval_GetFrame()` and `PyThreadState_GetFrame()` functions can be used to get a frame object.

See also Reflection.

PyFrameObject *PyFrame_GetBack(PyFrameObject *frame)

  Get the frame next outer frame.

  Return a strong reference, or `NULL` if frame has no outer frame.

  New in version 3.9.

PyObject *PyFrame_GetBuiltins(PyFrameObject *frame)

  Get the frame’s `f_builtins` attribute.

  Return a strong reference. The result cannot be `NULL`.

  New in version 3.11.

PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)
  Part of the Stable ABI since version 3.10.

  Get the frame code.

  Return a strong reference.

  The result (frame code) cannot be `NULL`.

  New in version 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 is `NULL`.

  Return a strong reference, or `NULL`.

  New in version 3.11.

PyObject *PyFrame_GetGlobals(PyFrameObject *frame)

  Get the frame’s `f_globals` attribute.

  Return a strong reference. The result cannot be `NULL`.

  New in version 3.11.

int PyFrame_GetLasti(PyFrameObject *frame)

  Get the frame’s `f_lasti` attribute.

  Returns -1 if `frame.f_lasti` is `None`.

  New in version 3.11.

PyObject *PyFrame_GetLocals(PyFrameObject *frame)

  Get the frame’s `f_locals` attribute (`dict`).

  Return a strong reference.

  New in version 3.11.

int PyFrame_GetLineNumber(PyFrameObject *frame)
  Part of the Stable ABI since version 3.10.

  Return the line number that frame is currently executing.