20 Mar
2003
20 Mar
'03
3:33 p.m.
Guido van Rossum
writes: The bytecode compiler should be clever enough to see that you're writing
for i in range(...): ...
and that there's no definition of range other than the built-in one (this requires a subtle change of language rules); it can then substitute an internal equivalent to xrange().
Ouch! What happens to:
def foo(seq): for x in seq: ...
foo(xrange(small, really_big))
if xrange dies??
Good point. I guess xrange() can't die until range() becomes an iterator (which can't be before Python 3.0). Hm, maybe range() shouldn't be an iterator but an interator generator. No time to explain; see the discussion about restartable iterators. --Guido van Rossum (home page: http://www.python.org/~guido/)