# Objetos función

Hay algunas funciones específicas para las funciones de Python.

type `PyFunctionObject`

  La estructura C utilizada para las funciones.

PyTypeObject `PyFunction_Type`

  Esta es una instancia de `PyTypeObject` y representa el tipo función de Python. Está expuesto a los programadores de Python como `types.FunctionType`.

int `PyFunction_Check`(PyObject *o)

  Retorna verdadero si o es un objeto función (tiene tipo `PyFunction_Type`). El parámetro no debe ser `NULL`. Esta función siempre finaliza con éxito.

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

  Retorna un nuevo objeto función asociado con el objeto código code. globals debe ser un diccionario con las variables globales accesibles para la función.

  El docstring y el nombre de la función se obtiene del objeto código. __module__ se obtiene de globals *. El argumento *defaults, annotations y closure se establecen en `NULL`. __qualname__ se establece en el mismo valor que el nombre de la función.

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

  Como `PyFunction_New()`, pero también permite configurar el atributo `__qualname__` del objeto función. qualname debe ser un objeto unicode o `NULL`; si es `NULL`, el atributo `__qualname__` se establece en el mismo valor que su atributo `__name__`.

  Nuevo en la versión 3.3.

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

  Retorna el objeto código asociado con el objeto función op.

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

  Retorna el diccionario global asociado con el objeto función op.

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

  Retorna una referencia tomada (borrowed reference) al atributo __module__ del objeto función op. Puede ser NULL.

  Éste es normalmente una cadena de caracteres que contiene el nombre del módulo, pero se puede establecer en cualquier otro objeto mediante código Python.

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

  Retorna los valores predeterminados del argumento del objeto función op. Esto puede ser una tupla de argumentos o `NULL`.

int `PyFunction_SetDefaults`(PyObject *op, PyObject *defaults)

  Establece los valores predeterminados del argumento para el objeto función op. defaults deben ser `Py_None` o una tupla.

  Lanza `SystemError` y retorna `-1` en caso de error.

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

  Retorna el cierre asociado con el objeto función op. Esto puede ser `NULL` o una tupla de objetos celda.

int `PyFunction_SetClosure`(PyObject *op, PyObject *closure)

  Establece el cierre asociado con el objeto función op. cierre debe ser `Py_None` o una tupla de objetos celda.

  Lanza `SystemError` y retorna `-1` en caso de error.

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

  Retorna las anotaciones del objeto función op. Este puede ser un diccionario mutable o `NULL`.

int `PyFunction_SetAnnotations`(PyObject *op, PyObject *annotations)

  Establece las anotaciones para el objeto función op. annotations debe ser un diccionario o `Py_None`.

  Lanza `SystemError` y retorna `-1` en caso de error.