Carl Banks wrote: > > I wondered if the Python compiler could, as a special case, turn: > > > > for i in range(n) > > > > into compiled code equivalent to > > > > for i in itr > > > > where "itr" is a lightweight iterator that returns the same values as > > iter(range(n)). > > Nope, out of the question for Python 2.x. Note that the the builtin > range could be rebound, or a global range could appear in the module, > at run time. There might even be a good reason to do so.... Point is, > optimizing the call to range can break compatibility even in the for > loop.
that could of course be addressed by turning for-in into a special method on the range object... map for variable in expression: block to _value = expression try: _for = _value.__for__ except AttributeError: _for = iter(_value).__for__ _for(variable, block) and tweak as necessary. </F> -- http://mail.python.org/mailman/listinfo/python-list