None ==== Définition ----------- ``None`` est une "valeur magique" natif en python. il est toujours présent, et il est unique. Un peu comme ``True`` et ``False`` qui sont deux valeurs qui servent à représenter tous les booléens. Représenter l'absence ---------------------- L'interpréteur intéractif n'affiche rien quand la valeur est None:: >>> a = 42 >>> a 42 >>> b = None >>> b Retourner None ---------------- En réalité, *toutes* les fonctions pythons retournent *quelque chose*, même quand elle ne contiennent pas le mot-clé ``return``.:: def ne_renvoie_rien(): print("je ne fais qu'afficher quelque chose") >>> resultat = ne_renvoie_rien() "je ne fais qu'afficher quelque chose" >>> resultat Opérations avec None --------------------- La plupart des fonctions que nous avons vues échouent si on leur passe ``None`` en argument:: >>> len(None) TypeError: object of type 'NoneType' has no len() >>> None < 3 TypeError: '<' not supported between instances of 'NoneType' and 'int' >>> int(None) TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType' >>> str(None) 'None' Example d'utilisation ---------------------- .. code-block:: python def trouve_dans_liste(valeur, liste): for element in liste: if element == valeur: return element return None >>> trouve_dans_liste(2, [1, 2, 3]) 2 >>> trouve_dans_liste(False, [True, False]) False >>> trouve_dans_liste(1, [3, 4]) None est Falsy, et on peut vérifier si une variable vaut ``None`` avec ``is None``:: # hypothèse: `ma_valeur` n'est pas None mon_element = trouve_dans_liste(ma_valeur, ma_liste) if mon_element is None: print("élément absent de la liste") if not mon_element: # Peut-être que l'élément n'était pas dans la liste, # ou peut-être y était-il, mais avec une valeur falsy ...