keyword 'in' not returning a bool?

Reedick, Andrew jr9445 at ATT.COM
Fri Feb 8 12:20:20 EST 2008



> -----Original Message-----
> From: python-list-bounces+jr9445=att.com at python.org [mailto:python-
> list-bounces+jr9445=att.com at python.org] On Behalf Of c james
> Sent: Friday, February 08, 2008 12:10 PM
> To: python-list 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?






More information about the Python-list mailing list