In article <7x8wj2agma....@ruckus.brouhaha.com>, Paul Rubin <http://phr...@nospam.invalid> wrote: >Steven D'Aprano <st...@remove-this-cybersource.com.au> 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 >history. > >> 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 <upwest...@gmail.com> > 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 -- -- Albert van der Horst, UTRECHT,THE NETHERLANDS Economic growth -- being exponential -- ultimately falters. alb...@spe&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst -- http://mail.python.org/mailman/listinfo/python-list