[Python-3000] Equality of range objects

Anand Balachandran Pillai abpillai at gmail.com
Wed Apr 9 08:45:38 CEST 2008


Still this seems like a bad thing to break backward compatibility with.
However I cannot really provide a use-case apart from what Benjamin
has said -> Teaching. It is not a common use-case to equate ranges
in code and that is bad coding anyway.

Hopefully, this will be well documented at 3.0 release. Currently
that "whats new" page does not mention anything about the range
type and how it breaks backward compatibility.

The NEWS page for 3.0 a4 does say this however.

"range() now returns an iterator rather than a list.  Floats are not allowed.
  xrange() is no longer defined."

I guess more information can be added here to actually specify
that range() returns not just any iterator, but an iterator which is a new
type and how it is different.

As regarding education, the following example can be used to
illustrate why things are different now.

>>> l=[1,2,3,4,5]
>>> l2=[1,2,3,4,5]
>>> iter(l2)
<list_iterator object at 0xb7d5066c>
>>> iter(l2)==iter(l)
False
>>>

Since range() is an iterator type, this should explain why
we cannot equate two range objects anymore.

Thanks

--Anand

On Wed, Apr 9, 2008 at 3:48 AM, Guido van Rossum <guido at python.org> wrote:
> On Tue, Apr 8, 2008 at 2:49 PM, Benjamin Peterson
>  <musiccomposition at gmail.com> >  range is one of the first functions
>  introduced in teaching Python.
>
>  That's only because educators were raised on Pascal for loops.
>
>  --
>
> --Guido van Rossum (home page: http://www.python.org/~guido/)
>
>
> _______________________________________________
>  Python-3000 mailing list
>  Python-3000 at python.org
>  http://mail.python.org/mailman/listinfo/python-3000
>  Unsubscribe: http://mail.python.org/mailman/options/python-3000/abpillai%40gmail.com
>



-- 
-Anand


More information about the Python-3000 mailing list