HOWTO · Python
Python NULL
Ce tutoriel traite de NULL en Python
Sur cette page
Python ne possède pas de mot-clé NULL. Sa valeur équivalente à une valeur nulle est le singleton intégré None, qui sert souvent à marquer une valeur facultative ou une référence d’objet qui n’a pas encore été définie. Pour le tester, utilisez value is None. None est une valeur de type NoneType ; ce n’est pas le nombre zéro, et le code Python n’utilise pas de pointeurs assignables comme en C. Le terme NULL a un sens propre à chaque langage : ne partez pas du principe que les valeurs ainsi nommées se comportent de la même façon dans tous les langages.
Vérifier si une valeur Python est None
Pour effectuer ce test, utilisez généralement l’opérateur d’identité is. Il vérifie si les deux côtés désignent le même objet, ce qui fait de value is None la façon claire de reconnaître le singleton Python. Le guide pour vérifier si une variable Python vaut None traite du même sujet.
Exécutez cet exemple autonome :
values = [None, "ready"]
for value in values:
if value is None:
print("value is None")
else:
print("value is set")
value is None
value is set
Le test avec is distingue la valeur None de la chaîne de caractères. Les deux branches permettent d’adapter le même modèle à un argument de fonction, au résultat d’une recherche ou à un champ facultatif. Remplacez les valeurs de l’exemple par la variable que votre programme doit examiner.
En général, value == None n’est pas la forme recommandée. La comparaison d’égalité peut être personnalisée par la classe d’un objet ; elle ne signifie donc pas forcément « cette valeur est le singleton None ». Utilisez l’égalité pour comparer le contenu de valeurs ordinaires, et l’identité pour tester None. Cette distinction évite aussi de confondre avec None d’autres valeurs considérées comme fausses, telles que 0, False ou "".
Vérifier le type de None en Python
Pour examiner le type associé à la valeur None, transmettez-la à la fonction intégrée type() de Python. La classe renvoyée s’appelle NoneType. None est le singleton ; NoneType est son type. Dans du code courant, un test d’identité est plus clair qu’une vérification du type, mais type() peut être utile pour explorer les objets Python ou lire des informations de diagnostic.
Cet exemple court affiche le nom de la classe plutôt que sa représentation complète en Python :
value = None
print(type(value).__name__)
NoneType
Pour cette valeur intégrée, le nom est NoneType. Ne décrivez pas None comme un type de données : c’est un objet qui possède ce type. Évitez également d’utiliser type(value) is type(None) à la place du test direct value is None ; ce dernier exprime la vérification plus clairement.
Représenter une référence d’objet absente avec None en Python
Les variables Python font référence à des objets, mais le code Python n’expose pas de pointeurs assignables comme en C. None sert souvent à représenter une référence facultative qui n’a pas encore été définie, par exemple l’enfant d’un nœud avant qu’un autre nœud lui soit rattaché. Il s’agit d’une convention de modélisation : c’est le programme qui détermine ce que None signifie pour cet attribut.
L’exemple suivant définit un nœud avec deux références facultatives vers ses enfants et vérifie si son enfant gauche est absent :
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
root = Node("root")
print(root.left is None)
True
Chaque nouveau nœud initialise left et right à None ; le code peut ensuite affecter un autre Node à l’un ou l’autre attribut. La dernière expression vérifie si l’enfant gauche est toujours absent. Cet exemple illustre les références d’objets en Python, pas un pointeur que l’on peut déréférencer ou auquel on peut affecter une adresse NULL comme en C. En Python, None est une valeur ordinaire au niveau des objets, utilisée par convention pour signaler une absence ; le code doit tester explicitement cette valeur avant d’utiliser une référence facultative.