Evaluation of boolean expressions in Python

boolean, object, python

Solution

Any object can be tested for truth value, for use in an if or while condition or as operand of the Boolean operations below. The following values are considered false:

None

False

zero of any numeric type, for example, `0`, `0L`, `0.0`, `0j`.

any empty sequence, for example, `''`, `()`, `[]`.

any empty mapping, for example, `{}`.

instances of user-defined classes, if the class defines a `__nonzero__()` or `__len__()` method, when that method returns the integer zero or bool value `False`.

All other values are considered true -- so objects of many types are always true. Operations and built-in functions that have a Boolean result always return 0 or `False` for false and 1 or `True` for true, unless otherwise stated. (Important exception: the Boolean operations "or" and "and" always return one of their operands.)

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

And as mentioned, you can override with custom objects by modifying nonzero.

Problem

What truth value do objects evaluate to in Python? Related Questions - Boolean Value of Objects in Python: Discussion about overriding the way it is evaluated

Original source

Related problems