Hi, There seems to be inconsistency in the way the new range(...) type implements equality and inequality operators.
In Python 2.x, range(...) of course returns lists and when you equate lhs of two range(...) functions over the same range, you get True, since we are comparing equal lists. Python 2.5.1 (r251:54863, Sep 6 2007, 17:27:08) [GCC 4.1.1 20061011 (Red Hat 4.1.1-30)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> range(5,10)==range(5,10) True >>> In Py3k, however I see the following behavior. Python 3.0a4+ (py3k:62126, Apr 3 2008, 16:28:40) [GCC 4.1.2 20070626 (Red Hat 4.1.2-13)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> range(5,10)==range(5,10) False >>> r1=range(5,10) >>> r2=range(5,10) >>> r1==r2 False >>> r1 != r2 True Won't this be quite confusing for people who carry forward their code from 2.x to 3.0 ? Though the range(...) is no longer a function, but a type, the semantics should not change so much that two range objects over the same range cannot be equated. It seems __eq__ is not implemented for range. >>> r1.__eq__(r2) NotImplemented Perhaps this is the problem ? I could not find much documentation on the range type, so posting the question here. Thanks --Anand -- -Anand _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com