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

---

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

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

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

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

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

Возвращает истину, если

*p*

является объектом модуля или подтипом объекта модуля.

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

Возвращает true, если

*p*

является объектом модуля, но не подтипом

[`PyModule_Type`](https://python-all.ru/3.0/c-api/module.html#PyModule_Type)

.

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

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

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

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

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

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

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

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

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

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

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

Добавляет объект в

*module*

под именем

*name*

. Это удобная функция, которую можно использовать в функции инициализации модуля. Она похищает ссылку на

*value*

. Возвращает

`-1`

при ошибке,

`0`

при успехе.

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

Добавляет целочисленную константу в модуль

*module*

под именем

*name*

. Эту удобную функцию можно использовать из функции инициализации модуля. Возвращает

`-1`

в случае ошибки,

`0`

при успешном выполнении.

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

Добавляет строковую константу в

*module*

под именем

*name*

. Эту вспомогательную функцию можно использовать в функции инициализации модуля. Строка

*value*

должна завершаться нулевым символом. Возвращает

`-1`

при ошибке,

`0`

при успехе.

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

Добавляет целочисленную константу в

*module*

. Имя и значение берутся из

*macro*

. Например,

`PyModule_AddConstant(module, AF_INET)`

добавляет целочисленную константу

*AF\_INET*

со значением

*AF\_INET*

в

*module*

. Возвращает

`-1`

при ошибке,

`0`

при успехе.

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

Добавляет строковую константу в

*module*

.
