de Python docs:
El operador no cede True si su argumento es falso, de lo contrario es False.
La expresión xey primero evalúa x; si x es falso, se devuelve su valor; de lo contrario, y se evalúa y se devuelve el valor resultante.
La expresión xoy primero primero evalúa x; si x es verdadero, se devuelve su valor; de lo contrario, y se evalúa y se devuelve el valor resultante.
El operador or
de Python devuelve el primer valor de Verdad-y, o el último valor, y se detiene. Esto es muy útil para asignaciones de programación comunes que necesitan valores de retorno.
gusta esta sencilla:
print my_list or "no values"
Esto imprimirá my_list
, si tiene algo en ella. De lo contrario, imprimirá no values
(si la lista está vacía, o es None
...).
Un ejemplo sencillo:
>>> my_list = []
>>> print my_list or 'no values'
no values
>>> my_list.append(1)
>>> print my_list or 'no values'
[1]
El cumplido mediante el uso de and
, que devuelve el primer valor falso y, o el último valor, y se detiene, se utiliza cuando se desea un guardia en lugar de un repliegue.
como ésta:
my_list and my_list.pop()
Esto es útil ya que no se puede utilizar en list.pop
None
, o []
, que son valores comunes a las listas anteriores.
Un ejemplo simple:
>>> my_list = None
>>> print my_list and my_list.pop()
None
>>> my_list = [1]
>>> print my_list and my_list.pop()
1
En ambos casos se devuelven valores no booleanos y sin excepciones fueron criados.
Lo que quizás te haga tropezar es que puedes usar cualquier tipo de datos en un contexto que parezca querer un booleano. 'si 17: blah' es legal. –