keyword 'in' not returning a bool?

Arnaud Delobelle arnodel at googlemail.com
Fri Feb 8 12:35:25 EST 2008


On Feb 8, 5:20 pm, "Reedick, Andrew" <jr9... at ATT.COM> wrote:
> > -----Original Message-----
> > From: python-list-bounces+jr9445=att.... at python.org [mailto:python-
> > list-bounces+jr9445=att.... at python.org] On Behalf Of c james
> > Sent: Friday, February 08, 2008 12:10 PM
> > To: python-l... at python.org
> > 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




More information about the Python-list mailing list