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

---

# Объекты модулей

Есть лишь несколько функций, специфичных для объектов модуля.

**[PyTypeObject](https://python-all.ru/2.6/c-api/type.html#PyTypeObject) `PyModule_Type`**

Этот экземпляр [`PyTypeObject`](https://python-all.ru/2.6/c-api/type.html#PyTypeObject) представляет тип модуля Python. Он доступен программам на Python как `types.ModuleType`.

**int `PyModule_Check`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*)**

Возвращает истину, если *p* является объектом модуля или подтипом объекта модуля.

Изменено в версии 2.2: Теперь допускаются подтипы.

**int `PyModule_CheckExact`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*)**

Возвращает true, если *p* является объектом модуля, но не подтипом [`PyModule_Type`](https://python-all.ru/2.6/c-api/module.html#PyModule_Type).

Новое в версии 2.2.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyModule_New`(const char *\*name*)**

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

Возвращает новый объект модуля с атрибутом `__name__`, установленным в *name*. Заполнены только атрибуты модуля `__doc__` и `__name__`; вызывающий отвечает за предоставление атрибута `__file__`.

**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyModule_GetDict`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*module*)**

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

Возвращает объект словаря, который реализует пространство имён *module*; этот объект совпадает с атрибутом `__dict__` объекта модуля. Эта функция никогда не завершается ошибкой. Расширениям рекомендуется использовать другие `PyModule_*()` и `PyObject_*()` функции, а не напрямую манипулировать `__dict__` модуля.

**char\* `PyModule_GetName`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*module*)**

Возвращает значение `__name__` для объекта *module*. Если модуль не предоставляет его или если это не строка, возбуждается [`SystemError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.SystemError) и возвращается *NULL*.

**char\* `PyModule_GetFilename`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*module*)**

Возвращает имя файла, из которого был загружен *модуль*, используя *модуль*‘s `__file__` атрибут. Если этот атрибут не определён или не является строкой, возбуждает [`SystemError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.SystemError) и возвращает *NULL*.

**int `PyModule_AddObject`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*module*, const char *\*name*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*value*)**

Добавляет объект в *module* под именем *name*. Это удобная функция, которую можно использовать в функции инициализации модуля. Она похищает ссылку на *value*. Возвращает `-1` при ошибке, `0` при успехе.

Новое в версии 2.0.

**int `PyModule_AddIntConstant`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*module*, const char *\*name*, long *value*)**

Добавляет целочисленную константу в модуль *module* под именем *name*. Эту удобную функцию можно использовать из функции инициализации модуля. Возвращает `-1` в случае ошибки, `0` при успешном выполнении.

Новое в версии 2.0.

**int `PyModule_AddStringConstant`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*module*, const char *\*name*, const char *\*value*)**

Добавляет строковую константу в *module* под именем *name*. Эту вспомогательную функцию можно использовать в функции инициализации модуля. Строка *value* должна завершаться нулевым символом. Возвращает `-1` при ошибке, `0` при успехе.

Новое в версии 2.0.

**int `PyModule_AddIntMacro`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*module*, macro)**

Добавляет целочисленную константу в *module*. Имя и значение берутся из *macro*. Например, `PyModule_AddConstant(module, AF_INET)` добавляет целочисленную константу *AF\_INET* со значением *AF\_INET* в *module*. Возвращает `-1` при ошибке, `0` при успехе.

Новое в версии 2.6.

**int `PyModule_AddStringMacro`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*module*, macro)**

> Добавляет строковую константу в
>
> *module*
>
> .

Новое в версии 2.6.
