> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:python-
> [EMAIL PROTECTED] On Behalf Of c james
> Sent: Friday, February 08, 2008 12:10 PM
> To: python-list@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?



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

Reply via email to