and / or operators return value

logical-operators, operators, python

Solution

The `and` and `or` operators do return one of their operands, not a pure boolean value like `True` or `False`:

>>> 0 or 42
42
>>> 0 and 42
0

Whereas `not` always returns a pure boolean value:

>>> not 0
True
>>> not 42
False

Problem

I was watching a 2007 video on Advanced Python or Understanding Python, and at 18'27" the speaker claims "As some may know in Python `and` and `or` return one of the two values, whereas `not` returns always a boolean." When has this been the case? As far as I can tell, `and` and `or` return booleans, too.

Original source

Related problems