On 18/03/2019 15:10, Eric Fahlgren wrote:
On Mon, Mar 18, 2019 at 7:04 AM Rhodri James
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