# Функціональні об’єкти

Є кілька функцій, специфічних для функцій Python.

type 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 має бути словником із глобальними змінними, доступними для функції.

  The function’s docstring and name are retrieved from the code object. `__module__` is retrieved from globals. The argument defaults, annotations and closure are set to `NULL`. `__qualname__` is set to the same value as the code object’s `co_qualname` field.

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

  As `PyFunction_New()`, but also allows setting the function object’s `__qualname__` attribute. qualname should be a unicode object or `NULL`; if `NULL`, the `__qualname__` attribute is set to the same value as the code object’s `co_qualname` field.

  Нове в версії 3.3.

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

  Повертає об’єкт коду, пов’язаний з об’єктом функції op.

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

  Повертає словник globals, пов’язаний з об’єктом функції op.

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

  Return a borrowed reference to the `__module__` attribute of the function object op. It can be NULL.

  This is normally a `string` containing the module name, but can be set to any other object by Python code.

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

  Повертає стандартні значення аргументу об’єкта функції op. Це може бути кортеж аргументів або `NULL`.

int PyFunction_SetDefaults(PyObject *op, PyObject *defaults)

  Установіть значення аргументу за замовчуванням для об’єкта функції op. за замовчуванням має бути `Py_None` або кортеж.

  Викликає `SystemError` і повертає `-1` у разі помилки.

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

  Повертає закриття, пов’язане з об’єктом функції op. Це може бути `NULL` або кортеж об’єктів клітинки.

int PyFunction_SetClosure(PyObject *op, PyObject *closure)

  Установіть закриття, пов’язане з функціональним об’єктом op. закриття має бути `Py_None` або кортеж об’єктів клітинки.

  Викликає `SystemError` і повертає `-1` у разі помилки.

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

  Повертає анотації об’єкта функції op. Це може бути змінний словник або `NULL`.

int PyFunction_SetAnnotations(PyObject *op, PyObject *annotations)

  Встановіть анотації для об’єкта функції op. анотації мають бути словником або `Py_None`.

  Викликає `SystemError` і повертає `-1` у разі помилки.