[Python-ideas] New explicit methods to trim strings
Steven D'Aprano
steve at pearwood.info
Tue Apr 2 22:44:11 EDT 2019
On Tue, Apr 02, 2019 at 07:28:01PM +0100, MRAB wrote:
[...]
> > word[len(prefix) if word.startswith(prefix) else 0:]
> >
> It could be 'improved' more to:
>
> word[word.startswith(prefix) and len(prefix) : ]
[...]
> _Neither_ version copies if the word doesn't start with the prefix. If
> you won't believe me, test them! :-)
That slicing doesn't make a copy of the string is an implementation-
dependent optimization, not a language guarantee. It's an obvious
optimization to make (and in my testing, it does work all the way back
to CPython 1.5) but if you want to write implementation-independent
code, you shouldn't rely on it.
By the letter of the language spec, an interpreter may make a copy of a
string when doing a full slice string[0:len(string)].
--
Steven
More information about the Python-ideas
mailing list