question of style

Albert van der Horst albert at
Mon Jul 13 22:46:19 EDT 2009

In article <7x8wj2agma.fsf at>,
Paul Rubin  <> wrote:
>Steven D'Aprano <steve at> writes:
>> > but I don't accept that "somethingness"
>> > vs. "nothingness" is the same distinction as truth vs falsehood.
>> It's the distinction used by Python since the dawn of time. Python only
>> grew a bool type a few versions back.
>That's true, part of the situation we have now is an artifact of that
>> I'm not talking about the constants True and False (nouns), but about
>> true and false values (adjectives).
>But, it seems to me, the constants True and False are the only values
>to which the adjectives "true" and "false" should be applicable to.
>> > The idea that the "if"
>> > statement selects between "somethingness" and "nothingness" rather than
>> > between True and False is a bogus re-imagining of the traditional
>> > function of an "if" statement
>> There's nothing bogus about it.
>> > and has been an endless source of bugs in Python code.
>> I wonder why these "endless" bugs weren't important enough to be
>> mentioned in the rationale to PEP 285:
>Because adding the bool type doesn't really fix those bugs.
>> describing `if x` as the "correct form" and calling scrapping such a
>> feature as "crippling the language".
>Certainly, changing "if" would have broken an immense amount of code
>and been a completely unworkable approach.  We are using a fairly
>mature language by now; it has a culture and history that carries
>certain baggage, as one should expect.
>> > Look how much confusion it causes here in the newsgroup all the time.
>> The only confusion is that you're causing me. Would you care to link to
>> some?
>This current discussion (about bools) came from such confusion just a
>few posts up in this very thread:
>    From: upwestdon <upwestdon at>
>    Date: Fri, 3 Jul 2009 23:03:39 -0700 (PDT)
>    How about just:
>    if not (self.higher and self.lower):
>        return self.higher or self.lower
>That test was designed to treat None as a boolean False, without
>noticing that numeric 0 is also treated as False and could make the
>test do the wrong thing.  This is an extremely common type of error.
>> > could see some value to having a generic "is_empty" predicate
>> We have that already. It's spelled __bool__ or __nonzero__
>That's fine, but under the "explicit is better than implicit"
>principle, it's preferable to call that predicate explicitly:
>"if bool(x): ..." rather than "if x:".  Also, after many years of

Maybe I'm missing something here, but if self.higher contains 0,
wouldn't bool(self.higher) evaluate to False?
So how does this help?

Groetjes Albert

Economic growth -- being exponential -- ultimately falters.
albert at spe&ar& &=n

More information about the Python-list mailing list