HOWTO · Python
Python NULL
Este tutorial analiza NULL en Python
En esta página
Python no tiene una palabra clave NULL. Su valor equivalente a nulo es el singleton integrado None, que suele indicar un valor opcional o una referencia a un objeto que aún no se ha establecido. Para comprobarlo, usa value is None. None es un valor cuyo tipo es NoneType; no es cero numérico, y el código de Python no asigna punteros al estilo de C. Cada lenguaje da a NULL su propio significado, así que no des por sentado que se comporta igual en todos.
Comprobar si un valor de Python es None
Para la comprobación habitual, usa el operador de identidad is. Este comprueba si ambos lados hacen referencia al mismo objeto; por eso, value is None es la forma clara de reconocer el singleton de Python. La guía para comprobar si una variable de Python es None explica la misma tarea.
Ejecuta este ejemplo autónomo:
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
La comprobación con is distingue el valor None de la cadena, y las dos ramas permiten adaptar el mismo patrón a un argumento de función, al resultado de una búsqueda o a un campo opcional. Sustituye los valores de muestra por la variable que necesites comprobar en tu programa.
Por lo general, value == None no es la forma recomendada. Una clase puede personalizar la igualdad, de modo que esa expresión quizá no signifique «este valor es el singleton None». Usa la igualdad para comparar valores ordinarios según su contenido y la identidad para comprobar si algo es None. Así tampoco confundirás con None otros valores que pueden parecer falsos, como 0, False o "".
Comprobar el tipo de None en Python
Para inspeccionar el tipo asociado al valor None, pásalo a la función integrada type() de Python. La clase devuelta se llama NoneType. None es el valor singleton; NoneType es su tipo. En el código habitual, comprobar la identidad es más claro que comprobar el tipo, pero type() puede resultar útil al explorar objetos de Python o leer información de diagnóstico.
Este breve ejemplo imprime el nombre de la clase en lugar de su representación completa en Python:
value = None
print(type(value).__name__)
NoneType
Para este valor integrado, el nombre es NoneType. No describas None como un tipo de datos: es un objeto de ese tipo. Tampoco uses type(value) is type(None) en lugar de la comprobación directa value is None; esta última expresa la pregunta con más claridad.
Representar con None una referencia a un objeto ausente en Python
Las variables de Python hacen referencia a objetos, pero el código de Python no expone punteros asignables al estilo de C. Un uso habitual de None es representar una referencia opcional que todavía no se ha establecido, como el hijo de un nodo antes de enlazar otro nodo. Es una convención de modelado: el programa que rodea al atributo determina qué significa None en ese contexto.
El siguiente ejemplo define un nodo con dos referencias opcionales a sus hijos y comprueba si falta el hijo izquierdo:
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
root = Node("root")
print(root.left is None)
True
Cada nodo nuevo empieza con left y right establecidos en None; más adelante, el código puede asignar otro Node a cualquiera de esos atributos. La expresión final comprueba si el hijo izquierdo sigue ausente. Este ejemplo ilustra las referencias a objetos en Python, no un puntero que se pueda desreferenciar ni al que se pueda asignar una dirección NULL como en C. None es un valor normal a nivel de objeto que, por convención, señala ausencia; el código debe comprobar explícitamente ese valor antes de usar una referencia opcional.