Message286206
I think the wording could be improved, but there is another option I wanted to put here. Right now, we're being overly detailed about the implementation, specifying the bounds substitutions performed. If we're just trying to describe logical behavior, we could simplify footnote 4 to, dropping explicit descriptions for "out of bounds" cases, getting:
The slice of *s* from *i* to *j* is defined as the sequence of items with index *k* such that ``i <= k < j`` and ``0 <= k < len(s)``. If *i* is omitted or ``None``, use ``0``. If *j* is omitted or ``None``, use ``len(s)``. If *i* is greater than or equal to *j*, the slice is empty.
That avoids needing to be explicit about substitutions in the < -len(s) case and > len(s) cases, since limiting the values of k to the intersection of range(i, j) and range(len(s)) covers both ends. I considered a single range, like ``max(0, i) <= k < min(j, len(s))``, but that wouldn't describe the upper bound on i or the lower bound on j properly, and ``min(max(0, i), len(s)) <= k < min(max(0, j), len(s))`` is ugly. Footnote 3 covers the adjustment for negative values already, which allows for the simpler description. |
|
Date |
User |
Action |
Args |
2017-01-24 19:08:30 | josh.r | set | recipients:
+ josh.r, docs@python, akira |
2017-01-24 19:08:30 | josh.r | set | messageid: <1485284910.29.0.612565958962.issue29352@psf.upfronthosting.co.za> |
2017-01-24 19:08:30 | josh.r | link | issue29352 messages |
2017-01-24 19:08:29 | josh.r | create | |
|