[Python-3000] Equality of range objects (original) (raw)
Anand Balachandran Pillai abpillai at gmail.com
Tue Apr 8 15:25:18 CEST 2008
- Previous message: [Python-3000] Bug in pickling range objects ?
- Next message: [Python-3000] Equality of range objects
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: [Python-3000] Bug in pickling range objects ?
- Next message: [Python-3000] Equality of range objects
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]