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

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

PyFunctionObject

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

PyTypeObject PyFunction_Type

Сущность PyTypeObject и представляет тип функции Python. Он подвергается воздействию Python программистов в качестве types.FunctionType.

int PyFunction_Check(PyObject *o)

Возвращает true, если o является объектом функции (имеет тип PyFunction_Type). Параметр не должен быть NULL.

PyObject* PyFunction_New(PyObject *code, PyObject *globals)
Return value: New reference.

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

Докстринг и имя функции извлекаются из кодового объекта. __module__ извлекается из globals. Для параметров аргумента по умолчанию, аннотаций и закрытия устанавливается значение NULL. __qualname__ имеет тот же значение, что и имя функции.

PyObject* PyFunction_NewWithQualName(PyObject *code, PyObject *globals, PyObject *qualname)
Return value: New reference.

Как PyFunction_New(), но также позволяет установить __qualname__ атрибут объекта функции. qualname должен быть объектом или NULL Юникода; если NULL, __qualname__ атрибут устанавливается в то же значение, что и его __name__ атрибут.

Добавлено в версии 3.3.

PyObject* PyFunction_GetCode(PyObject *op)
Return value: Borrowed reference.

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

PyObject* PyFunction_GetGlobals(PyObject *op)
Return value: Borrowed reference.

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

PyObject* PyFunction_GetModule(PyObject *op)
Return value: Borrowed reference.

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

PyObject* PyFunction_GetDefaults(PyObject *op)
Return value: Borrowed reference.

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

int PyFunction_SetDefaults(PyObject *op, PyObject *defaults)

Задайть значение аргумента по умолчанию для op объекта функции. defaults должен быть Py_None или кортежем.

Поднимает SystemError и возвращает -1.

PyObject* PyFunction_GetClosure(PyObject *op)
Return value: Borrowed reference.

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

int PyFunction_SetClosure(PyObject *op, PyObject *closure)

Задать замыкание, связанное с op объектом функции. closure должны быть Py_None или кортежем объектов ячейки.

Поднимает SystemError и возвращает -1.

PyObject *PyFunction_GetAnnotations(PyObject *op)
Return value: Borrowed reference.

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

int PyFunction_SetAnnotations(PyObject *op, PyObject *annotations)

Задать аннотации для op объекта функции. annotations должен быть словарем или Py_None.

Поднимает SystemError и возвращает -1.