True/False value testing

Chris Angelico rosuav at gmail.com
Thu Jan 7 07:38:16 EST 2016


On Thu, Jan 7, 2016 at 11:07 PM, Marko Rauhamaa <marko at pacujo.net> wrote:
> However, I *could* find this statement:
>
>    1. [or] is a short-circuit operator, so it only evaluates the second
>       argument if the first one is False.
>
>    2. [and] is a short-circuit operator, so it only evaluates the second
>       argument if the first one is True.
>
>    <URL: https://docs.python.org/3/library/stdtypes.html#boolean-op
>    erations-and-or-not>
>
> The wording is very unfortunate (both the use of the word "is" and the
> explicit references to the builtin constants False and True).

Actually, that's a good point. I would call that a docs error.

The definition of the comparison operators is, more or less:

1) Call a.__lt__(b). If it doesn't return NotImplemented, that's the value.
2) Call b.__gt__(a). If it doesn't return NotImplemented, that's the value.
3) Raise TypeError.

Massively simplified; steps 1 and 2 get switched around if b is a
subclass of a, and there's stuff about slots, and so on. But that's
basically it. The function is allowed to return anything it likes. The
built-in types generally return instances of bool, but custom classes
are free to generalize (as numpy has done to great effect).

ChrisA



More information about the Python-list mailing list