[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