Arnaud Delobelle wrote:

> On Feb 8, 5:20 pm, "Reedick, Andrew" <[EMAIL PROTECTED]> wrote:
>> > -----Original Message-----
>> > From: [EMAIL PROTECTED] [mailto:python-
>> > [EMAIL PROTECTED] On Behalf Of c james
>> > Sent: Friday, February 08, 2008 12:10 PM
>> > To: [EMAIL PROTECTED]
>> > Subject: keyword 'in' not returning a bool?
>>
>> > Try this
>>
>> > >>> sample = {'t':True, 'f':False}
>> > >>> 't' in sample
>> > True
>> > >>> type('t' in sample)
>> > <type 'bool'>
>> > >>> 't' in sample == True
>> > False
>>
>> > Why is this?  Now try
>> > >>> bool('t' in sample) == True
>> > True
>>
>> > Can someone explain what is going on?
>>
>> >>> ('t' in sample) == True
>>
>> True
>>
>> It's operator precedence. 'in' has lower precedence than '=='. Therefore
>> 't' in sample == True
>> evaluates as
>> 't' in (sample == True)
>>
>> The real question is why does
>> 't' in (sample == True)
>> cause an error:
>> TypeError: argument of type 'bool' is not iterable
>> while
>> 't' in sample == True
>> does not?
> 
> That should have told you precedence is not the reason!

I would guess that it is the same reason that:
1 <= (2 < 3)
is different than:
1 <= 2 < 3

Condition-chaining, I think its called, though I might be wrong.

> 
> --
> Arnaud

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to