I think `'\n'.join(lines, 1)` & `'\n'.join(lines, 'e')` are worse than `'\n'.join(lines, at_end=True)` or others, it's much more complicated to understand what will be produced.
Le ven. 10 mars 2023 à 00:47, Rob Cliffe via Python-ideas < python-ideas@python.org> a écrit : > > > On 09/03/2023 05:25, Bruce Leban wrote: > > > On Wed, Mar 8, 2023 at 4:34 PM Rob Cliffe via Python-ideas < > python-ideas@python.org> wrote: > >> It seems to me that it would be useful to be able to make the str.join() >> function put separators, not only between the items of its operand, but >> also optionally at the beginning or end. >> E.g. '|'.join(('Spam', 'Ham', 'Eggs')) returns >> 'Spam|Ham|Eggs' >> but it might be useful to make it return one of >> '|Spam|Ham|Eggs' >> 'Spam|Ham|Eggs|' >> '|Spam|Ham|Eggs|' >> > > Compare these two lines: > > '\n'.join(lines) + '\n' > '\n'.join(lines, atEnds=1) > > > > The first is not only shorter, it's more clear what it's doing. I'd have > to look up everytime to remember whether the value atEnds=1 is doing the > right thing. It's just IMHO not valuable enough for the cost. Not every > potential optimization is worth including in the core language or the > stdlib (if this even is an optimization). > > I don't think your comparison is fair. > If the second one were written > '\n'.join(lines, 1) > it would be shorter. And if it were spelt > '\n'.join(lines, 'e') # s for at Start, e for at End, b for Both > which I now think is preferable, it would still be shorter and you > probably wouldn't need to look it up. > And when it comes to examples like > return policy.linesep.join(lines) + policy.linesep > return policy.linesep.join(lines, 'e') > it would save even more characters and very likely be (more of) an > optimisation. > > Ben mentions being able to specify if a terminal separator is wanted when > the list is empty. That is an idea which I think is worth considering. > How about: > 'S' = always add a separator at start > 's' = add a separator at start unless the list is empty > 'E' = always add a separator at end > 'e' = add a separator at end unless the list is empty > with these combinations being allowed: > 'se, 'SE', 'Se', 'sE' > (the last two would have the same effect, but the difference in emphasis > might clarify the author's thought). > If nothing else, this would push authors into thinking about the empty > list case, rather than being sloppy about it as Ben suspects in one or two > cases. > > Best wishes > Rob Cliffe > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/UXPYKBZL7Z2XQUH2DWXPT5A3QVCLUOAT/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- Antoine Rozo
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/IQHXPDJMRCYNEYPILSCBN3UW7GP5E64Q/ Code of Conduct: http://python.org/psf/codeofconduct/