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'>
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
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
É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
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
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
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
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
