On Feb 8, 5:20 pm, "Reedick, Andrew" <[EMAIL PROTECTED]> wrote: > > -----Original Message----- > > From: [EMAIL PROTECTED] [mailto:python- > > [EMAIL PROTECTED] On Behalf Of c james > > Sent: Friday, February 08, 2008 12:10 PM > > To: [EMAIL PROTECTED] > > 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 -- http://mail.python.org/mailman/listinfo/python-list