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

---

# Объекты функций

Есть несколько функций, специфичных для функций Python.

**`PyFunctionObject`**

C-структура, используемая для функций.

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

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

**int `PyFunction_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**

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

*o*

является объектом функции (имеет тип

[`PyFunction_Type`](https://python-all.ru/3.1/c-api/function.html#PyFunction_Type)

). Параметр не должен быть

*NULL*

.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyFunction_New`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*code*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*globals*)**

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

Возвращает новый объект функции, связанный с объектом кода *code*. *globals* должен быть словарём с глобальными переменными, доступными функции.

Docstring, имя и *\_\_module\_\_* функции берутся из объекта кода, значения аргументов по умолчанию и замыкание устанавливаются в *NULL*.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyFunction_GetCode`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*op*)**

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

Возвращает объект кода, связанный с объектом функции *op*.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyFunction_GetGlobals`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*op*)**

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

Возвращает словарь глобальных переменных, связанный с объектом функции *op*.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyFunction_GetModule`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*op*)**

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

Возвращает атрибут *\_\_module\_\_* объекта-функции *op*. Обычно это строка с именем модуля, но может быть установлено в любой другой объект кодом Python.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyFunction_GetDefaults`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*op*)**

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

Возвращает значения аргументов по умолчанию объекта функции *op*. Это может быть кортеж аргументов или *NULL*.

**int `PyFunction_SetDefaults`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*op*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*defaults*)**

Устанавливает значения аргументов по умолчанию для объекта функции *op*. *defaults* должен быть *Py\_None* или кортежем.

Возбуждает [`SystemError`](https://python-all.ru/3.1/library/exceptions.html#SystemError) и возвращает `-1` при ошибке.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyFunction_GetClosure`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*op*)**

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

Возвращает замыкание, связанное с объектом функции *op*. Это может быть *NULL* или кортеж cell-объектов.

**int `PyFunction_SetClosure`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*op*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*closure*)**

Устанавливает замыкание, связанное с объектом функции *op*. *closure* должен быть *Py\_None* или кортежем cell-объектов.

Возбуждает [`SystemError`](https://python-all.ru/3.1/library/exceptions.html#SystemError) и возвращает `-1` при ошибке.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) \*`PyFunction_GetAnnotations`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*op*)**

Возвращает аннотации объекта функции

*op*

. Это может быть изменяемый словарь или

*NULL*

.

**int `PyFunction_SetAnnotations`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*op*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*annotations*)**

Устанавливает аннотации для объекта функции *op*. *annotations* должен быть словарём или *Py\_None*.

Возбуждает [`SystemError`](https://python-all.ru/3.1/library/exceptions.html#SystemError) и возвращает `-1` при ошибке.
