2009-09-21 13 views

Respuesta

18

Cualquier objeto puede ser probado para valor de verdad , para uso en un si o mientras condición o como operando de las operaciones booleanas abajo. Los siguientes valores se consideran falsa:

  • Ninguno

  • False

  • cero de cualquier tipo numérico, por ejemplo, 0, 0L, 0.0, 0j.

  • cualquier secuencia vacía, por ejemplo, '', (), [].

  • cualquier asignación vacía, por ejemplo, {}.

  • instancias de clases definidas por el usuario, si la clase define un método __nonzero__() o __len__(), cuando ese método devuelve el valor de número entero cero o bool False.

Todos los demás valores se consideran cierto - lo que los objetos de muchos tipos son siempre verdaderas. Las operaciones y las funciones incorporadas que tienen un resultado booleano siempre devuelven 0 o False para falso y 1 o True como verdadero, a menos que se indique lo contrario. (Excepción importante: las operaciones booleanas "o" y "y" siempre devuelven uno de sus operandos.)

https://docs.python.org/2/library/stdtypes.html#truth-value-testing

Y como se mencionó, se puede reemplazar con objetos personalizados modificando distinto de cero.

+5

Solo hay que tener en cuenta que en Python 3.0 debe sobrescribirse '__bool__' en su lugar – Casebash

+7

Los documentos que cita son imprecisos (o incompletos); por ejemplo, los conjuntos no son secuencias ni mapeos, sin embargo, cuando están vacíos, también son falsos. Yo colapsaría esas dos líneas (que también cubren el caso de los conjuntos) a "cualquier contenedor ** vacío **". –

8

actualización: Se han eliminado todos infomación duplicado con el post de Meder

Para los objetos personalizados en Python < 3.0 __nonzero__ para cambiar cómo se evalúa ed. En Python 3.0 esto es __bool__ (Reference por e-satis)

Es importante entender qué se entiende por evaluar. Un significado es cuando un objeto está lanzando explícitamente a bool o implícitamente emitido por su ubicación (en un ciclo if o while).

Otra es == evaluación. 1 == Verdadero, 0 == Falso, nada más es igual vía ==.

>>> None==False 
False 
>>> 1==True 
True 
>>> 0==False 
True 
>>> 2==False 
False 
>>> 2==True 
False 

Finalmente, para el, solo True o False son ellos mismos.

+0

Los objetos personalizados pueden devolver True/False para la evaluación booleana mediante la implementación de __nonzero__ – dcrosta

Cuestiones relacionadas