module.md
1> **Источник:** https://python-all.ru/2.7/c-api/module.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты модулей89Есть лишь несколько функций, специфичных для объектов модуля.1011**[PyTypeObject](https://python-all.ru/2.7/c-api/type.html#c.PyTypeObject) `PyModule_Type`**1213Этот экземпляр [`PyTypeObject`](https://python-all.ru/2.7/c-api/type.html#c.PyTypeObject) представляет тип Python-модуля. Он доступен программам Python как `types.ModuleType`.1415#### `int PyModule_Check(PyObject *p)`1617Возвращает истину, если *p* является объектом модуля или подтипом объекта модуля.1819Изменено в версии 2.2: Теперь допускаются подтипы.2021#### `int PyModule_CheckExact(PyObject *p)`2223Возвращает истину, если *p* является объектом модуля, но не подтипом [`PyModule_Type`](https://python-all.ru/2.7/c-api/module.html#c.PyModule_Type).2425Новое в версии 2.2.2627#### `PyObject* PyModule_New(const char *name)`2829*Возвращаемое значение: новая ссылка.*3031Возвращает новый объект модуля с атрибутом `__name__`, установленным в *name*. Заполняются только атрибуты `__doc__` и `__name__` модуля; вызывающий код отвечает за предоставление атрибута `__file__`.3233#### `PyObject* PyModule_GetDict(PyObject *module)`3435*Возвращаемое значение: заимствованная ссылка.*3637Возвращает объект словаря, реализующий пространство имён *module*; этот объект совпадает с атрибутом [`__dict__`](https://python-all.ru/2.7/library/stdtypes.html#object.__dict__) объекта модуля. Эта функция никогда не завершается ошибкой. Расширениям рекомендуется использовать другие функции `PyModule_*()` и `PyObject_*()`, а не напрямую манипулировать [`__dict__`](https://python-all.ru/2.7/library/stdtypes.html#object.__dict__) модуля.3839#### `char* PyModule_GetName(PyObject *module)`4041Возвращает значение `__name__` *module*. Если модуль не предоставляет такого значения или оно не является строкой, возбуждается [`SystemError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.SystemError) и возвращается *NULL*.4243#### `char* PyModule_GetFilename(PyObject *module)`4445Возвращает имя файла, из которого был загружен *module*, используя атрибут `__file__` *module*. Если он не определён или не является строкой, возбуждается [`SystemError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.SystemError) и возвращается *NULL*.4647#### `int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)`4849Добавляет объект в *module* под именем *name*. Это удобная функция, которую можно использовать в функции инициализации модуля. Она похищает ссылку на *value*. Возвращает `-1` при ошибке, `0` при успехе.5051Новое в версии 2.0.5253#### `int PyModule_AddIntConstant(PyObject *module, const char *name, long value)`5455Добавляет целочисленную константу в модуль *module* под именем *name*. Эту удобную функцию можно использовать из функции инициализации модуля. Возвращает `-1` в случае ошибки, `0` при успешном выполнении.5657Новое в версии 2.0.5859#### `int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)`6061Добавляет строковую константу в *module* под именем *name*. Эту вспомогательную функцию можно использовать в функции инициализации модуля. Строка *value* должна завершаться нулевым символом. Возвращает `-1` при ошибке, `0` при успехе.6263Новое в версии 2.0.6465#### `int PyModule_AddIntMacro(PyObject *module, macro)`6667Добавляет целочисленную константу в модуль *module*. Имя и значение берутся из *macro*. Например, `PyModule_AddIntMacro(module, AF_INET)` добавляет целочисленную константу *AF\_INET* со значением *AF\_INET* в модуль *module*. Возвращает `-1` в случае ошибки, `0` при успешном выполнении.6869Новое в версии 2.6.7071#### `int PyModule_AddStringMacro(PyObject *module, macro)`7273> Добавляет строковую константу в *module*.7475Новое в версии 2.6.76