Posible duplicado:
¿Por qué “[] == False” se evalúa como False cuando “if not []” tiene éxito?
Soy nuevo en python según el operador ternario de python
>>> 'true' if True else 'false' true true
Estoy esperando la salida del código a continuación como [] porque [] no es igual a Ninguno
>>> a=[] >>> a==None False >>> a if a else None None
Por favor, si estoy equivocado
Gracias hema
La lista vacía, []
, no es igual a None
.
Sin embargo, se puede evaluar en False
es decir, su valor de “verdad” es False
. (Vea las fonts en los comentarios dejados en el OP.)
Debido a esto,
>>> [] == False False >>> if []: ... print "true!" ... else: ... print "false!" false!
None
es la única instancia de NoneType
y generalmente se usa para indicar la ausencia de valor. Lo que sucede en su ejemplo es que la lista vacía, tomada en un contexto booleano, se evalúa como False
, la condición falla, por lo que se ejecuta la twig else. El intérprete hace algo como:
>>> a if a else None [] if [] else None [] if False else None None
Aquí hay otra discusión útil con respecto a la prueba None
: no Ninguna en Python