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!

--
Arnaud

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

Reply via email to