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.
