validate - ¿Cómo "probar" NoneType en python?
python null variable (6)
Tengo un método que a veces devuelve un valor NoneType. Entonces, ¿cómo puedo cuestionar una variable que es un tipo de entrada? Necesito usar el método if , por ejemplo.
if not new:
new = ''#''
Sé que es el camino equivocado y espero que entiendas lo que quise decir.
Entonces, ¿cómo puedo cuestionar una variable que es un tipo de entrada?
El uso is operador, como este
if variable is None:
¿Por qué esto funciona?
Ya que None es el único objeto singleton de NoneType en Python, podemos usar is operador para verificar si una variable tiene None en ella o no.
De citar is docs ,
Los operadores
isyis notprueban la identidad del objeto:x is yes verdadero si y solo sixeyson el mismo objeto.x is not yproduce el valor de verdad inverso.
Dado que solo puede haber una instancia de None , is sería la forma preferida de marcar None .
Escuchalo desde la boca del caballo.
Citas de las Pautas de estilo de codificación de Python - PEP-008 (definidas conjuntamente por el propio Guido),
Las comparaciones con singletons como
Nonedeben hacerse siempre con ois not, nunca con los operadores de igualdad .
No estoy seguro si esto responde a la pregunta. Pero sé que esto me tomó un tiempo para averiguar. Estaba recorriendo un sitio web y, de repente, el nombre de los autores ya no estaba allí. por lo que necesitaba una declaración de verificación.
if type (author) == type (None): my if body else: my else body
el autor puede ser cualquier variable en este caso, y Ninguno puede ser de cualquier tipo que esté verificando
Python 2.7:
x = None
isinstance(x, type(None))
o
isinstance(None, type(None))
==> Verdadero
Sin embargo, la forma más sencilla, sin la línea adicional, además de la respuesta del cardamomo, es:
isinstance(x, type(None))
Entonces, ¿cómo puedo cuestionar una variable que es un tipo de entrada? Necesito usar el método if
El uso de isinstance() no requiere un is dentro de la declaración if :
if isinstance(x, type(None)):
#do stuff
Información Adicional
También puede verificar varios tipos en una declaración isinstance() como se menciona en la documentation . Solo escribe los tipos como una tupla.
isinstance(x, (type(None), bytes))
También se puede hacer con isinstance según la respuesta de Alex Hall :
>>> NoneType = type(None)
>>> x = None
>>> type(x) == NoneType
True
>>> isinstance(x, NoneType)
True
isinstance también es intuitivo, pero existe la complicación de que requiere la línea.
NoneType = type(None)
que no es necesario para tipos como int y float .
if variable is None:
print ''Is None''
-
if variable is not None:
print ''Isn/'t None''