¿Qué valor de verdad evalúan los objetos en Python?Evaluación de expresiones booleanas en Python
preguntas relacionadas
- Boolean Value of Objects in Python: Discusión sobre anulando la forma en que se evalúa
¿Qué valor de verdad evalúan los objetos en Python?Evaluación de expresiones booleanas en Python
preguntas relacionadas
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 boolFalse
.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 oTrue
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.
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.
Los objetos personalizados pueden devolver True/False para la evaluación booleana mediante la implementación de __nonzero__ – dcrosta
Solo hay que tener en cuenta que en Python 3.0 debe sobrescribirse '__bool__' en su lugar – Casebash
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 **". –