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
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to