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