On 18/03/2019 15:10, Eric Fahlgren wrote:
On Mon, Mar 18, 2019 at 7:04 AM Rhodri James <rho...@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
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to