# Objetos función

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

`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 el atributo __module__ del objeto función op. Normalmente es una cadena de caracteres que contiene el nombre del módulo, pero se puede establecer en cualquier otro objeto mediante el 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.