[Python-Dev] range objects in 3.x
Ethan Furman
ethan at stoneleaf.us
Tue Sep 27 20:20:25 CEST 2011
Steven D'Aprano wrote:
> 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.)
Good points. So how about:
some_name_here(start, stop, *, step=None, count=None)
? I personally would use the step value far more often than the count
value.
~Ethan~
More information about the Python-Dev
mailing list