[Python-Dev] range objects in 3.x

Steven D'Aprano steve at pearwood.info
Tue Sep 27 19:55:15 CEST 2011


Ethan Furman wrote:

> What about the idea of this signature?
> 
> frange([start], stop, step=None, count=None)
> 
> Then when count is desired, it can be specified, and when step is 
> sufficient, no change is necessary.

A default of start=0 makes sense for integer range, because the most 
common use for range *by far* is for counting, and in Python we count 0, 
1, 2, ... Similarly, we usually count every item, so a default step of 1 
is useful.

But for numeric work, neither of those defaults are useful. This 
proposed spread/frange/whatever function will be used for generating a 
sequence of equally spaced numbers, and not for counting. A starting 
value of 0.0 is generally no more special than any other starting value. 
There is no good reason to single out default start=0. Likewise a 
step-size of 1.0 is also arbitrary.

It isn't useful to hammer the square peg of numeric ranges into the 
round hole of integer counts. We should not try to force this float 
range to use the same API as builtin range.

(In hindsight, it is a shame that range is called "range" instead of 
"count". itertools got the name right.)



-- 
Steven



More information about the Python-Dev mailing list