# Annotation de types dans les fonctions

## Annotation de type (ou *Type hinting*)

Elle sert à indiquer explicitement les types de données attendus pour les paramètres de la fonction, ainsi que le type de la valeur de retour (le cas échéant). L'objectif principal de l'annotation de type est&#x20;

* d'améliorer la lisibilité du code,&#x20;
* de rendre plus claire la documentation (via les docstrings) et
* de faciliter la détection d'erreurs.

{% hint style="info" %}
Python est un langage de programmation dynamique qui n'impose pas de contraintes strictes sur les types de données. Les annotations de type ne sont pas strictement nécessaires pour que le code fonctionne. Cependant, elles sont une pratique recommandée pour les raisons citées plus haut.
{% endhint %}

## Syntaxe

```python
def nom_fonction(parametre_1: type1, parametre_2: type2, ..., parametre_n: typen) -> type_retour:
    # Code
    return resultat # Résultat étant la valeur de retour de la fonction
```

## Exemple :&#x20;

<pre class="language-python"><code class="lang-python">def trouver_element(liste<a data-footnote-ref href="#user-content-fn-1">: list[int]</a>, element<a data-footnote-ref href="#user-content-fn-2">: int</a>) <a data-footnote-ref href="#user-content-fn-2">-> bool</a>:
    """
    Cette fonction recherche un élément dans une liste et renvoie True si l'élément est trouvé, False sinon.

    :param liste: La liste dans laquelle rechercher
    :param element: L'élément à rechercher dans la liste.
    :return: True si l'élément est trouvé, False sinon.

    Example:
        ma_liste = [1, 2, 3, 4, 5]

        trouver_element(ma_liste, 3) --> True

        trouver_element(ma_liste, 6) --> False
    """

    if element in liste:
        return True
    else:
        return False


if __name__ == "__main__" :
    ma_liste = [1, 2, 3, 4, 5]

    # Appel de la fonction
    element_est_trouve = trouver_element(ma_liste, 3)
    print(element_est_trouve)

</code></pre>

<figure><img src="https://700524925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn5YnWU89G98lz0ROIcGu%2Fuploads%2FTMvovbMOgS0LzBrdcyqb%2Fimage.png?alt=media&#x26;token=ab721615-d316-4c6e-9448-4a19fc0d5f4e" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Pour une fonction qui ne retourne rien, elle est annotée avec `-> None`.

**Exemple :**&#x20;

```python
def afficher_message(message: str) -> None:
    print(message)
```

{% endhint %}

[^1]: Type hinting&#x20;

[^2]: Type hinting
