On Sun, 2009-05-03 at 19:48 -0700, alex23 wrote: > On May 4, 11:41 am, Esmail <ebo...@hotmail.com> wrote: > > All this discussion makes me wonder if it would be a good idea > > for Python to have this feature (batteries included and all) - it > > would have its uses, no? > > Well, sometimes more discussion == less consensus :) > > But it's really easy to roll your own: > > from decimal import Decimal > > def args2dec(fn): > '''*args to Decimal decorator''' > float2dec = lambda f: Decimal(str(f)) > def _args2dec(*args): > args = map(float2dec, args) > return fn(*args) > return _args2dec > > @args2dec > def drange(start, stop, step): > while start < stop: > yield start > start += step
I'd prefer not to force my users into using the Decimal type. Maybe float fits their needs better. So here's a generalized xrange replacement, which fixes an error in the drange implementation above (try it with a negative step). It's also highly *not* optimized. Calculating i * step every time slows it down. Speeding it back up is an exercise for the reader. def general_xrange(start, stop, step=1): target = stop * step if start * step > target: raise ValueError i = start while i * step < target: yield i i += step Cheers, Cliff -- http://mail.python.org/mailman/listinfo/python-list