isinstance(False, int)

Jack Diederich jackdied at gmail.com
Fri Mar 5 15:58:01 EST 2010


On Fri, Mar 5, 2010 at 2:54 PM, Steven D'Aprano
<steve at remove-this-cybersource.com.au> wrote:
> On 2010年3月05日 15:01:23 -0400, Rolando Espinoza La Fuente wrote:
>>> On Fri, Mar 5, 2010 at 2:32 PM, mk <mrkafk at gmail.com> wrote:
>>> Arnaud Delobelle wrote:
>>>>>>>>>> 1 == True
>>>>>>>> True
>>>>>>>>>>>>>> 0 == False
>>>>>>>> True
>>>>>>>> So what's your question?
>>>>>> Well nothing I'm just kind of bewildered: I'd expect smth like that in
>>> Perl, but not in Python.. Although I can understand the rationale after
>>> skimming PEP 285, I still don't like it very much.
>>>>>>>> So, the pythonic way to check for True/False should be:
>>>>>>> 1 is True
>> False
>> Why do you need to check for True/False?
>
You should never check for "is" False/True but always check for
equality. The reason is that many types support the equality (__eq__)
and boolen (__bool__ in 3x) protocols. If you check equality these
will be invoked, if you check identity ("is") they won't.
-Jack


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /