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

---

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

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

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

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

#### `int PyModule_Check(PyObject *p)`

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

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

#### `int PyModule_CheckExact(PyObject *p)`

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

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

#### `PyObject* PyModule_New(const char *name)`

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

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

#### `PyObject* PyModule_GetDict(PyObject *module)`

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

Возвращает объект словаря, реализующий пространство имён *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__) модуля.

#### `char* PyModule_GetName(PyObject *module)`

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

#### `char* PyModule_GetFilename(PyObject *module)`

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

#### `int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)`

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

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

#### `int PyModule_AddIntConstant(PyObject *module, const char *name, long value)`

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

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

#### `int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)`

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

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

#### `int PyModule_AddIntMacro(PyObject *module, macro)`

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

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

#### `int PyModule_AddStringMacro(PyObject *module, macro)`

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

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