> **Источник:** https://python-all.ru/3.14/c-api/reflection.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Рефлексия

#### `PyObject *PyEval_GetBuiltins(void)`

*Возвращаемое значение: заимствованная ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable).*

Устарело с версии 3.13: Используйте [`PyEval_GetFrameBuiltins()`](https://python-all.ru/3.14/c-api/reflection.html#c.PyEval_GetFrameBuiltins) вместо этого.

Возвращает словарь встроенных имен в текущем фрейме выполнения или интерпретатор состояния потока, если в данный момент ни один фрейм не выполняется.

#### `PyObject *PyEval_GetLocals(void)`

*Возвращаемое значение: заимствованная ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable).*

Устарело с версии 3.13: Используйте либо [`PyEval_GetFrameLocals()`](https://python-all.ru/3.14/c-api/reflection.html#c.PyEval_GetFrameLocals), чтобы получить то же поведение, что и при вызове [`locals()`](https://python-all.ru/3.14/library/functions.html#locals) в коде Python, либо вызовите [`PyFrame_GetLocals()`](https://python-all.ru/3.14/c-api/frame.html#c.PyFrame_GetLocals) для результата [`PyEval_GetFrame()`](https://python-all.ru/3.14/c-api/reflection.html#c.PyEval_GetFrame), чтобы получить доступ к атрибуту [`f_locals`](https://python-all.ru/3.14/reference/datamodel.html#frame.f_locals) текущего выполняемого фрейма.

Возвращает отображение, предоставляющее доступ к локальным переменным в текущем фрейме выполнения, или `NULL`, если в данный момент ни один фрейм не выполняется.

Обратитесь к [`locals()`](https://python-all.ru/3.14/library/functions.html#locals) за подробностями об отображении, возвращаемом в разных областях видимости.

Поскольку эта функция возвращает [заимствованную ссылку](https://python-all.ru/3.14/glossary.html#term-borrowed-reference), словарь, возвращаемый для [оптимизированных областей видимости](https://python-all.ru/3.14/glossary.html#term-optimized-scope), кэшируется в объекте фрейма и будет оставаться живым, пока существует объект фрейма. В отличие от [`PyEval_GetFrameLocals()`](https://python-all.ru/3.14/c-api/reflection.html#c.PyEval_GetFrameLocals) и [`locals()`](https://python-all.ru/3.14/library/functions.html#locals), последующие вызовы этой функции в том же фрейме будут обновлять содержимое кэшированного словаря, чтобы отражать изменения состояния локальных переменных, вместо возврата нового снимка.

Изменено в версии 3.13: В рамках [**PEP 667**](https://python-all.ru/3.14/c-api/reflection.html) функции [`PyFrame_GetLocals()`](https://python-all.ru/3.14/c-api/frame.html#c.PyFrame_GetLocals), [`locals()`](https://python-all.ru/3.14/library/functions.html#locals) и [`FrameType.f_locals`](https://python-all.ru/3.14/reference/datamodel.html#frame.f_locals) больше не используют общий кэшированный словарь. Обратитесь к [записи «Что нового»](https://python-all.ru/3.14/whatsnew/3.13.html#whatsnew313-locals-semantics) за дополнительными сведениями.

#### `PyObject *PyEval_GetGlobals(void)`

*Возвращаемое значение: заимствованная ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable).*

Устарело с версии 3.13: Используйте [`PyEval_GetFrameGlobals()`](https://python-all.ru/3.14/c-api/reflection.html#c.PyEval_GetFrameGlobals) вместо этого.

Возвращает словарь глобальных переменных в текущем фрейме выполнения или `NULL`, если в данный момент ни один фрейм не выполняется.

#### `PyFrameObject *PyEval_GetFrame(void)`

*Возвращаемое значение: заимствованная ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable).*

Возвращает фрейм [присоединенного состояния потока](https://python-all.ru/3.14/glossary.html#term-attached-thread-state), который равен `NULL`, если в данный момент ни один фрейм не выполняется.

См. также [`PyThreadState_GetFrame()`](https://python-all.ru/3.14/c-api/threads.html#c.PyThreadState_GetFrame).

#### `PyObject *PyEval_GetFrameBuiltins(void)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable) начиная с версии 3.13.*

Возвращает словарь встроенных имен в текущем фрейме выполнения или интерпретатор состояния потока, если в данный момент ни один фрейм не выполняется.

Добавлено в версии 3.13.

#### `PyObject *PyEval_GetFrameLocals(void)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable) начиная с версии 3.13.*

Возвращает словарь локальных переменных в текущем фрейме выполнения или `NULL`, если в данный момент ни один фрейм не выполняется. Эквивалентно вызову [`locals()`](https://python-all.ru/3.14/library/functions.html#locals) в коде Python.

Чтобы получить доступ к [`f_locals`](https://python-all.ru/3.14/reference/datamodel.html#frame.f_locals) в текущем фрейме без создания независимого снимка в [оптимизированных областях видимости](https://python-all.ru/3.14/glossary.html#term-optimized-scope), вызовите [`PyFrame_GetLocals()`](https://python-all.ru/3.14/c-api/frame.html#c.PyFrame_GetLocals) для результата [`PyEval_GetFrame()`](https://python-all.ru/3.14/c-api/reflection.html#c.PyEval_GetFrame).

Добавлено в версии 3.13.

#### `PyObject *PyEval_GetFrameGlobals(void)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable) начиная с версии 3.13.*

Возвращает словарь глобальных переменных в текущем фрейме выполнения или `NULL`, если в данный момент ни один фрейм не выполняется. Эквивалентно вызову [`globals()`](https://python-all.ru/3.14/library/functions.html#globals) в коде Python.

Добавлено в версии 3.13.

#### `const char *PyEval_GetFuncName(PyObject *func)`

*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable).*

Возвращает имя *func*, если это функция, класс или объект экземпляра, в противном случае – имя типа *func*.

#### `const char *PyEval_GetFuncDesc(PyObject *func)`

*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable).*

Возвращает строку описания в зависимости от типа *func*. Возвращаемые значения включают «()» для функций и методов, « constructor», « instance» и « object». При конкатенации с результатом [`PyEval_GetFuncName()`](https://python-all.ru/3.14/c-api/reflection.html#c.PyEval_GetFuncName) результатом будет описание *func*.
