Функциональные объекты

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

PyFunctionObject

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

PyTypeObject PyFunction_Type

Это экземпляр PyTypeObject и представляет тип функции Python. Программистам Python он предоставляется как types.FunctionType.

int PyFunction_Check(PyObject *o)

Возвращает истину, если 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 в случае ошибки.