Документация Python неофициальный перевод

reflection.md

98 строк · 8.9 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.16/c-api/reflection.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Рефлексия89#### `PyObject *PyEval_GetBuiltins(void)`1011*Возвращаемое значение: заимствованная ссылка.*1213*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*1415Устарело с версии 3.13: Используйте [`PyEval_GetFrameBuiltins()`](https://python-all.ru/3.16/c-api/reflection.html#c.PyEval_GetFrameBuiltins) вместо этого.1617Возвращает словарь встроенных имен в текущем фрейме выполнения или интерпретатор состояния потока, если в данный момент ни один фрейм не выполняется.1819#### `PyObject *PyEval_GetLocals(void)`2021*Возвращаемое значение: заимствованная ссылка.*2223*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*2425Устарело с версии 3.13: Используйте либо [`PyEval_GetFrameLocals()`](https://python-all.ru/3.16/c-api/reflection.html#c.PyEval_GetFrameLocals), чтобы получить то же поведение, что и при вызове [`locals()`](https://python-all.ru/3.16/library/functions.html#locals) в коде Python, либо вызовите [`PyFrame_GetLocals()`](https://python-all.ru/3.16/c-api/frame.html#c.PyFrame_GetLocals) для результата [`PyEval_GetFrame()`](https://python-all.ru/3.16/c-api/reflection.html#c.PyEval_GetFrame), чтобы получить доступ к атрибуту [`f_locals`](https://python-all.ru/3.16/reference/datamodel.html#frame.f_locals) текущего выполняемого фрейма.2627Возвращает отображение, предоставляющее доступ к локальным переменным в текущем фрейме выполнения, или `NULL`, если в данный момент ни один фрейм не выполняется.2829Обратитесь к [`locals()`](https://python-all.ru/3.16/library/functions.html#locals) за подробностями об отображении, возвращаемом в разных областях видимости.3031Поскольку эта функция возвращает [заимствованную ссылку](https://python-all.ru/3.16/glossary.html#term-borrowed-reference), словарь, возвращаемый для [оптимизированных областей видимости](https://python-all.ru/3.16/glossary.html#term-optimized-scope), кэшируется в объекте фрейма и будет оставаться живым, пока существует объект фрейма. В отличие от [`PyEval_GetFrameLocals()`](https://python-all.ru/3.16/c-api/reflection.html#c.PyEval_GetFrameLocals) и [`locals()`](https://python-all.ru/3.16/library/functions.html#locals), последующие вызовы этой функции в том же фрейме будут обновлять содержимое кэшированного словаря, чтобы отражать изменения состояния локальных переменных, вместо возврата нового снимка.3233Изменено в версии 3.13: В рамках [**PEP 667**](https://python-all.ru/3.16/c-api/reflection.html) функции [`PyFrame_GetLocals()`](https://python-all.ru/3.16/c-api/frame.html#c.PyFrame_GetLocals), [`locals()`](https://python-all.ru/3.16/library/functions.html#locals) и [`FrameType.f_locals`](https://python-all.ru/3.16/reference/datamodel.html#frame.f_locals) больше не используют общий кэшированный словарь. Обратитесь к [записи «Что нового»](https://python-all.ru/3.16/whatsnew/3.13.html#whatsnew313-locals-semantics) за дополнительными сведениями.3435#### `PyObject *PyEval_GetGlobals(void)`3637*Возвращаемое значение: заимствованная ссылка.*3839*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*4041Устарело с версии 3.13: Используйте [`PyEval_GetFrameGlobals()`](https://python-all.ru/3.16/c-api/reflection.html#c.PyEval_GetFrameGlobals) вместо этого.4243Возвращает словарь глобальных переменных в текущем фрейме выполнения или `NULL`, если в данный момент ни один фрейм не выполняется.4445#### `PyFrameObject *PyEval_GetFrame(void)`4647*Возвращаемое значение: заимствованная ссылка.*4849*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*5051Возвращает фрейм [присоединенного состояния потока](https://python-all.ru/3.16/glossary.html#term-attached-thread-state), который равен `NULL`, если в данный момент ни один фрейм не выполняется.5253См. также [`PyThreadState_GetFrame()`](https://python-all.ru/3.16/c-api/threads.html#c.PyThreadState_GetFrame).5455#### `PyObject *PyEval_GetFrameBuiltins(void)`5657*Возвращаемое значение: новая ссылка.*5859*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable) начиная с версии 3.13.*6061Возвращает словарь встроенных имен в текущем фрейме выполнения или интерпретатор состояния потока, если в данный момент ни один фрейм не выполняется.6263Добавлено в версии 3.13.6465#### `PyObject *PyEval_GetFrameLocals(void)`6667*Возвращаемое значение: новая ссылка.*6869*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable) начиная с версии 3.13.*7071Возвращает словарь локальных переменных в текущем фрейме выполнения или `NULL`, если в данный момент ни один фрейм не выполняется. Эквивалентно вызову [`locals()`](https://python-all.ru/3.16/library/functions.html#locals) в коде Python.7273Чтобы получить доступ к [`f_locals`](https://python-all.ru/3.16/reference/datamodel.html#frame.f_locals) в текущем фрейме без создания независимого снимка в [оптимизированных областях видимости](https://python-all.ru/3.16/glossary.html#term-optimized-scope), вызовите [`PyFrame_GetLocals()`](https://python-all.ru/3.16/c-api/frame.html#c.PyFrame_GetLocals) для результата [`PyEval_GetFrame()`](https://python-all.ru/3.16/c-api/reflection.html#c.PyEval_GetFrame).7475Добавлено в версии 3.13.7677#### `PyObject *PyEval_GetFrameGlobals(void)`7879*Возвращаемое значение: новая ссылка.*8081*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable) начиная с версии 3.13.*8283Возвращает словарь глобальных переменных в текущем фрейме выполнения или `NULL`, если в данный момент ни один фрейм не выполняется. Эквивалентно вызову [`globals()`](https://python-all.ru/3.16/library/functions.html#globals) в коде Python.8485Добавлено в версии 3.13.8687#### `const char *PyEval_GetFuncName(PyObject *func)`8889*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*9091Возвращает имя *func*, если это функция, класс или объект экземпляра, в противном случае – имя типа *func*.9293#### `const char *PyEval_GetFuncDesc(PyObject *func)`9495*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*9697Возвращает строку описания в зависимости от типа *func*. Возвращаемые значения включают «()» для функций и методов, « constructor», « instance» и « object». При конкатенации с результатом [`PyEval_GetFuncName()`](https://python-all.ru/3.16/c-api/reflection.html#c.PyEval_GetFuncName) результатом будет описание *func*.98