On Thu, 02 Dec 2010 00:15:42 -0800, Alice Bevan–McGregor wrote: > Howdy!
Good day to you! > (False == 0) is True > (True == 1) is True I see. Thanks for this. I suspected this, but wasn't sure. > The bool type is a subclass of int! (Run those lines in a Python > interpreter to see. ;) > >> if var == False: > > if var is False: … So "var is False" is safer to use when I want to specifically check whether var is set to False and not 0 or None? > If you want to check not just for value equivelance (False == 0) but > literal type, use the "is" comparator. "is" checks, and others correct > me if I'm wrong, the literal memory address of an object against > another. E.g. False, being a singleton, will always have the same > memory address. (This is true of CPython, possibly not of Python > implementations like Jython or IronPython.) Using "is" will be > effective for checking for literal None as well. Thanks, it makes sense to me now. Literal equivalence is what I was looking for. I didn't quite understand whether == achieved this or not. Now I guess I know. > > When ever I need to test for None, I always use the "is" comparator. > It's also more English-like. (None, evaluating to False when using > '==', is useful when all you care about is having a blank default value, > for example.) Yes, but in my function I don't want to confuse False with 0 or anything else except False. Thanks again for explaining this clearly. -- Harishankar (http://harishankar.org http://lawstudentscommunity.com) -- http://mail.python.org/mailman/listinfo/python-list