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
is
yis not
prueban la identidad del objeto:x is y
es verdadero si y solo six
ey
son el mismo objeto.x is not y
produce 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
None
deben 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''