Objets fonctions
****************

Certaines fonctions sont spécifiques aux fonctions Python.

type PyFunctionObject

   La structure C utilisée pour les fonctions.

PyTypeObject PyFunction_Type

   C'est une instance de "PyTypeObject" et représente le type fonction
   en Python. Il est exposé aux développeurs comme
   "types.FunctionType".

int PyFunction_Check(PyObject *o)

   Renvoie vrai si *o* est un objet de type fonction (a comme type
   "PyFunction_Type"). Le paramètre ne doit pas être "NULL". Cette
   fonction réussit toujours.

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

   Renvoie une nouvelle fonction associée avec l'objet *code*.
   *globals* doit être un dictionnaire avec les variables globales
   accessibles à la fonction.

   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.

   Nouveau dans la version 3.3.

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

   Renvoie l'objet code associé avec l'objet de la fonction *op*.

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

   Renvoie le dictionnaire global associé avec l'objet de la fonction
   *op*.

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

   Renvoie un *borrowed reference* à l'attribut "__module__" de
   l'objet fonction *op*. Il peut être *NULL*.

   C'est typiquement une chaîne de caractère contenant le nom du
   module, mais il peut être changé par du code Python pour n'importe
   quel autre objet.

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

   Renvoie les valeurs par défaut de l'argument de l'objet de la
   fonction *op*. Cela peut être un tuple d'arguments ou "NULL".

int PyFunction_SetDefaults(PyObject *op, PyObject *defaults)

   Définir les valeurs par défaut de l'argument pour l'objet de la
   fonction *op*. *defaults* doit être "Py_None" ou un tuple.

   Lève "SystemError" et renvoie "-1" en cas de d'échec.

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

   Renvoie la fermeture associée avec l'objet de la fonction *op*.
   Cela peut être "NULL" ou un tuple d'objets cellule.

int PyFunction_SetClosure(PyObject *op, PyObject *closure)

   Définir la fermeture associée avec l'objet de la fonction *op*.
   *closure* doit être "Py_None" ou un tuple d'objets cellule.

   Lève "SystemError" et renvoie "-1" en cas de d'échec.

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

   Renvoie les annotations de l'objet de la fonction *op*. Cela peut
   être un dictionnaire mutable ou "NULL".

int PyFunction_SetAnnotations(PyObject *op, PyObject *annotations)

   Définir les annotations pour l'objet de la fonction *op*.
   *annotations* doit être un dictionnaire ou "Py_None".

   Lève "SystemError" et renvoie "-1" en cas de d'échec.
