Ron Adam wrote: > George Sakkis wrote: > >> I get: >> >> None: 0.549999952316 >> String: 0.498000144958 >> is None: 0.450000047684 > > > What do yo get for "name is 'string'" expressions?
>>> 'abc' is 'abcd'[:3] False You need to test for equality (==), not identity (is) when equal things may be distinct. This is true for floats, strings, and most things which are not identity-based (None, basic classes). This is also true for longs and most ints (an optimization that makes "small" ints use a single identity can lead you to a mistaken belief that equal integers are always identical. >>> (12345 + 45678) is (12345 + 45678) False 'is' tests for identity match. "a is b" is roughly equivalent to "id(a) == id(b)". In fact an optimization inside string comparisons is the C equivalent of "return (id(a) == id(b) of len(a) == len(b) and <elements match>) --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list