Mike Duffy wrote: > I just recently realized that the comparison operator "is" actually > works for comparing numeric values.
It's only an implementation detail of CPython (and is only true for small integers - you'll find the limit in the CPython source code), not part of the language specifications. You should *not* relie on this behaviour. > Now, I know that its intended use > is for testing object identity, but I have used it for a few other > things, such as type checking, Don't use it for this neither unless you know exactly what you do. Use isinstance(obj, klass) instead - and yet better, don't check type at all if you can avoid it. > and I was just wondering whether or not > it is considered bad practice in the Python Community to use it for > numerics as well. It's even worse than a bad practice : it's an error. > Example: > > a = range(5) > b = range(5) > > if len(a) is len(b): > print "They're the same size!" > else: > print "They're not the same size!" > >>> a = range(32000) >>> b = range(32000) >>> len(a) is len(b) False -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list