Skip to content

En Python, N𝐨‌𝐧‌𝐞‌ est une constante intégrée représentant l’absence d’une valeur. Pour vérifier si quelque chose est N𝐨‌𝐧‌𝐞‌ , utilisez 𝐢‌𝐬‌ N𝐨‌𝐧‌𝐞‌ ou 𝐢‌𝐬‌ 𝐧‌𝐨‌𝐭‌ N𝐨‌𝐧‌𝐞‌ .

Notez que 𝐧‌𝐚‌𝐧‌ , qui représente un « pas un nombre », est une valeur de 𝐟‌𝐥‌𝐨‌𝐚‌𝐭‌ , un nombre à virgule flottante, et distinctif de N𝐨‌𝐧‌𝐞‌ . Pour plus de détails sur 𝐧‌𝐚‌𝐧‌ , consultez l’article suivant.

Aucun en Python

En Python, N𝐨‌𝐧‌𝐞‌ est une instance de N𝐨‌𝐧‌𝐞‌T𝐲‌𝐩‌𝐞‌ .

a = None print(a) # None print(type(a)) # <class 'NoneType'> 
source : none_usage.py

Il représente l’absence d’une valeur. Par exemple, une fonction qui ne renvoie pas précise une valeur avec 𝐫‌𝐞‌𝐭‌𝐮‌𝐫‌𝐧‌ renverra N𝐨‌𝐧‌𝐞‌ .

def func_none(): # do something pass x = func_none() print(x) # None 
source : none_usage.py

Vérification Aucune : 𝐢‌𝐬‌ N𝐨‌𝐧‌𝐞‌ , 𝐢‌𝐬‌ 𝐧‌𝐨‌𝐭‌ N𝐨‌𝐧‌𝐞‌

Comme recommandé dans la norme de codage Python PEP8, utilisez 𝐢‌𝐬‌ N𝐨‌𝐧‌𝐞‌ ou 𝐢‌𝐬‌ 𝐧‌𝐨‌𝐭‌ N𝐨‌𝐧‌𝐞‌ pour vérifier si une variable est N𝐨‌𝐧‌𝐞‌ ou non N𝐨‌𝐧‌𝐞‌ .

Les comparaisons avec des singletons comme N𝐨‌𝐧‌𝐞‌ doivent toujours être effectuées avec 𝐢‌𝐬‌ ou 𝐢‌𝐬‌ 𝐧‌𝐨‌𝐭‌ , jamais avec les opérateurs d’égalité. PEP 8 – Guide de style pour le code Python | peps.python.org

a = None print(a is None) # True print(a is not None) # False 
source : none_usage.py

Étant donné que N𝐨‌𝐧‌𝐞‌ est un singleton (la seule instance de N𝐨‌𝐧‌𝐞‌T𝐲‌𝐩‌𝐞‌ ), la comparaison d’identité d’objet ( 𝐢‌𝐬‌ , 𝐢‌𝐬‌ 𝐧‌𝐨‌𝐭‌ ) doit être utilisé à la place de la comparaison de valeurs ( == , != ).

Étant donné que N𝐨‌𝐧‌𝐞‌ est un singleton, tester l’identité de l’objet (en utilisant == en C) est suffisant. L’objet None — Documentation Python 3.11.3

Évitez de comparer N𝐨‌𝐧‌𝐞‌ avec == ou != , ou d’utiliser la variable elle-même comme condition pour indiquer qu’elle n’est pas N𝐨‌𝐧‌𝐞‌ . Les raisons de cette situation sont expliquées ci-dessous.

Aucun avec == ou !=

Comparer N𝐨‌𝐧‌𝐞‌ avec == ou != donneront les mêmes résultats que 𝐢‌𝐬‌ ou 𝐢‌𝐬‌ 𝐧‌𝐨‌𝐭‌ .

a = None print(a == None) # True print(a != None) # False 
source : none_usage.py

Cependant, == et != peuvent être surchargés par les méthodes spéciales __𝐞‌𝐪‌__ et __𝐧‌𝐞‌__ , qui peuvent être librement personnalisées.

Par conséquent, en fonction de l’implémentation de __𝐞‌𝐪‌__ , == N𝐨‌𝐧‌𝐞‌ peut renvoyer des valeurs T𝐫‌𝐮‌𝐞‌ même pour les qui ne sont pas N𝐨‌𝐧‌𝐞‌ . 𝐢‌𝐬‌ N𝐨‌𝐧‌𝐞‌ sera toujours vérifié correctement.

class MyClass: def __eq__(self, other): return True my_obj = MyClass() print(my_obj == None) # True print(my_obj is None) # False 
source : none_usage.py

Test de la valeur de vérité pour Aucun

En Python, tous les objets sont évalués comme T𝐫‌𝐮‌𝐞‌ ou F𝐚‌𝐥‌𝐬‌𝐞‌ .

N𝐨‌𝐧‌𝐞‌ est évalué comme F𝐚‌𝐥‌𝐬‌𝐞‌ .

print(bool(None)) # False 
source : none_usage.py

Cependant, vous ne devez pas écrire une branche conditionnelle indiquant qu’une variable 𝐱‌ n’est pas N𝐨‌𝐧‌𝐞‌ comme 𝐢‌𝐟‌ 𝐱‌ . Les valeurs numériques représentant 0 , les chaînes vides et les listes vides sont également efficaces comme F𝐚‌𝐥‌𝐬‌𝐞‌ , elles ne peuvent donc pas être distinguées de N𝐨‌𝐧‌𝐞‌ .

a = None if a: print(f'{a} is not None') else: print(f'{a} is None') # None is None a = 0 if a: print(f'{a} is not None') else: print(f'{a} is None') # 0 is None 
source : none_usage.py

Dans ce cas, vous devez également utiliser 𝐱‌ 𝐢‌𝐬‌ 𝐧‌𝐨‌𝐭‌ N𝐨‌𝐧‌𝐞‌ .

a = None if a is not None: print(f'{a} is not None') else: print(f'{a} is None') # None is None a = 0 if a is not None: print(f'{a} is not None') else: print(f'{a} is None') # 0 is not None 
source : none_usage.py