[Python-ideas] True and False are singletons

Rhodri James rhodri at kynesim.co.uk
Mon Mar 18 11:26:04 EDT 2019

On 18/03/2019 15:10, Eric Fahlgren wrote:
> On Mon, Mar 18, 2019 at 7:04 AM Rhodri James <rhodri at kynesim.co.uk> wrote:
>> On 18/03/2019 12:19, Richard Damon wrote:
>>> On 3/18/19 7:27 AM, Greg Ewing wrote:
>>>> Juancarlo Añez wrote:
>>>>>      if settings[MY_KEY] is True:
>>>>>          ...
>>>> If I saw code like this, it would take a really good argument to
>>>> convince me that it shouldn't be just
>>>>       if settings[MY_KEY]:
>>>>           ...
>>> That means something VERY different. The first asks if the item is
>>> specifically the True value, while the second just asks if the value is
>>> Truthy, it wold be satisfied also for values like 1.
>> Yes.  And the latter is what people almost always mean.
> No, it depends heavily on the context.  In GUI code, Oleg's example
> (tri-state checkbox) is a pervasive idiom.  There's lots of code that says
> "if x is True" or "if x is False" or "if x is None" and that's a very clear
> indicator that you are dealing with these "booleans that can also be
> 'unset'".

I would still contend that even in that case, testing "x is True" is 
asking to be hit with subtle bugs.

Rhodri James *-* Kynesim Ltd

More information about the Python-ideas mailing list