> I'm a little confused. Why doesn't s evaluate to True in the first part, 
>   but it does in the second? Is the first statement something different?
> 
>  >>> s = 'hello'
>  >>> s == True
> False
>  >>> if s:
>       print 'hi'

The "if s" does an implicit (yeah, I know, "explicit is better 
than implicit") conversion to bool, like

        if bool(s):

And as such, you'll find that

        bool(s) == True

You can learn more at

        http://docs.python.org/lib/truth.html

where you'll see that it's not really exactly a bool() call, but 
that strings are a special case listed here.  And if not, they 
also have a __len__ method which would return zero/non-zero in 
the even that strings weren't handled, making the "actual" test 
(if strings weren't special-cased)

        (s.__len__() <> 0) == True

-tkc




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

Reply via email to