Guido van Rossum <guido@python.org> writes: >> Guido van Rossum <guido@python.org> 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. I think what you mean is fairly obvious. list et al. are iterator generators, right? It's just a thing with an __iter__ function which produces an iterator? If so, I tend to agree that's the right behavior for range(). range(x,y,z) should be an immutable object. -- Dave Abrahams Boost Consulting www.boost-consulting.com
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4