Lo pregunto porque sé que el camino Pythonic para comprobar si una lista está vacía o no es lo siguiente:¿Por qué "[] == False" evalúa a False cuando "if not []" tiene éxito?
my_list = []
if not my_list:
print "computer says no"
else:
# my_list isn't empty
print "computer says yes"
imprimirá computer says no
, etc. Así que esto me lleva a identificar []
con False
verdad -valores; Sin embargo, si trato de comparar [] y False "directamente", me obtener lo siguiente:
>>> my_list == False
False
>>> my_list is False
False
>>> [] == False
False
etc ...
lo que está pasando aquí? Siento que me estoy perdiendo algo realmente obvio.
Este es un gran diseño, ya que también permite que los programadores no usen la cláusula 'if variable == True:'. Debería ser 'si la variable es verdadera:' (Es exactamente cierto, no cualquier otra cosa - No es la mejor manera de hacer las cosas en la mayoría de los casos), o 'si variable' (es verdad-y). – Darthfett