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

Є кілька функцій, специфічних для функцій 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 function’s name.

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 its `__name__` attribute.

  Нове в версії 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` у разі помилки.