[Python-ideas] Enhancing range object string displays
MRAB
python at mrabarnett.plus.com
Mon Nov 19 21:17:34 EST 2018
On 2018-11-20 00:19, Steven D'Aprano wrote:
> On the bug tracker, there is a proposal to enhance range objects so that
> printing them will display a snapshot of the values included, including
> the end points. For example:
>
> print(range(10))
>
> currently displays "range(10)". The proposal is for the __str__ method
> to instead return "<range object [0, 1, ..., 8, 9]>".
>
> https://bugs.python.org/issue35200
>
> print(range(2, 200, 3)) would display
>
> <range object [2, 5, ..., 194, 197]>
>
> Note that the original proposal was for range objects' __repr__ to
> display this behaviour. But given the loss of eval(repr(obj)) round
> tripping, and the risk of breaking backwards compatibility, it was
> decided that isn't acceptable but using the same display for __str__
> (and hence produced by print) would be nearly as useful but without the
> downsides.
>
> The developer who proposed the feature, Julien, now wants to reject the
> feature request. I think it is still a useful feature for range objects.
> What do others think? Is this worth re-opening?
>
Well, if it's not going to round-trip, and it's going to be more
verbose, then I think it shouldn't be making the step size implicit.
Maybe something more like: <range object, start 2, step 3, max 197>
But, overall, I'm ±0.
More information about the Python-ideas
mailing list