# 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.