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