Back to Cpython

Reflection

Doc/c-api/reflection.rst

3.15.0a83.7 KB
Original Source

.. highlight:: c

.. _reflection:

Reflection

.. c:function:: PyObject* PyEval_GetBuiltins(void)

.. deprecated:: 3.13

  Use :c:func:`PyEval_GetFrameBuiltins` instead.

Return a dictionary of the builtins in the current execution frame, or the interpreter of the thread state if no frame is currently executing.

.. c:function:: PyObject* PyEval_GetLocals(void)

.. deprecated:: 3.13

  Use either :c:func:`PyEval_GetFrameLocals` to obtain the same behaviour as calling
  :func:`locals` in Python code, or else call :c:func:`PyFrame_GetLocals` on the result
  of :c:func:`PyEval_GetFrame` to access the :attr:`~frame.f_locals` attribute of the
  currently executing frame.

Return a mapping providing access to the local variables in the current execution frame, or NULL if no frame is currently executing.

Refer to :func:locals for details of the mapping returned at different scopes.

As this function returns a :term:borrowed reference, the dictionary returned for :term:optimized scopes <optimized scope> is cached on the frame object and will remain alive as long as the frame object does. Unlike :c:func:PyEval_GetFrameLocals and :func:locals, subsequent calls to this function in the same frame will update the contents of the cached dictionary to reflect changes in the state of the local variables rather than returning a new snapshot.

.. versionchanged:: 3.13 As part of :pep:667, :c:func:PyFrame_GetLocals, :func:locals, and :attr:FrameType.f_locals <frame.f_locals> no longer make use of the shared cache dictionary. Refer to the :ref:What's New entry <whatsnew313-locals-semantics> for additional details.

.. c:function:: PyObject* PyEval_GetGlobals(void)

.. deprecated:: 3.13

  Use :c:func:`PyEval_GetFrameGlobals` instead.

Return a dictionary of the global variables in the current execution frame, or NULL if no frame is currently executing.

.. c:function:: PyFrameObject* PyEval_GetFrame(void)

Return the :term:attached thread state's frame, which is NULL if no frame is currently executing.

See also :c:func:PyThreadState_GetFrame.

.. c:function:: PyObject* PyEval_GetFrameBuiltins(void)

Return a dictionary of the builtins in the current execution frame, or the interpreter of the thread state if no frame is currently executing.

.. versionadded:: 3.13

.. c:function:: PyObject* PyEval_GetFrameLocals(void)

Return a dictionary of the local variables in the current execution frame, or NULL if no frame is currently executing. Equivalent to calling :func:locals in Python code.

To access :attr:~frame.f_locals on the current frame without making an independent snapshot in :term:optimized scopes <optimized scope>, call :c:func:PyFrame_GetLocals on the result of :c:func:PyEval_GetFrame.

.. versionadded:: 3.13

.. c:function:: PyObject* PyEval_GetFrameGlobals(void)

Return a dictionary of the global variables in the current execution frame, or NULL if no frame is currently executing. Equivalent to calling :func:globals in Python code.

.. versionadded:: 3.13

.. c:function:: const char* PyEval_GetFuncName(PyObject *func)

Return the name of func if it is a function, class or instance object, else the name of func\s type.

.. c:function:: const char* PyEval_GetFuncDesc(PyObject *func)

Return a description string, depending on the type of func. Return values include "()" for functions and methods, " constructor", " instance", and " object". Concatenated with the result of :c:func:PyEval_GetFuncName, the result will be a description of func.