(original) (raw)
On Sat, Sep 5, 2015 at 1:44 AM, haypo s <victor.stinner@gmail.com> wrote:
2015-09-05 5:01 GMT+02:00 Guido van Rossum <guido@python.org>:
\> And I'm ready to accept it. I'll wait until Tuesday night (Monday's a
\> holiday in the US) in case anything unforeseen comes up, but this is really
\> the Last Call for this PEP.
String concatenation is inefficient in Python because strings are
immutable. There is a micro-optimization which tried to reduce the bad
performances of a+b, but it's better to avoid it.
Python replaces >'abc' 'def'< with a single string >'abcdef'<. It's
done by the parser, there is no overhead at runtime.
PEP 498 allows to write >'abc' f'string'< which is replaced with
\>'abc' 'string'.\_\_format\_\_()< whereas str+str is a bad practice.
I would prefer to force users to write an explicit '+' to remind them
that there are more efficient ways to concatenate strings like
''.join((str1, str2)) or putting the first string in the f-string:
\>f'abcstring'<.
Section in the PEP:
https://www.python.org/dev/pepsstring/pep-0498/#concatenating-strings
Victor
What does the extra + buy users? It's just more punctuation noise. The implementation is intentionally left unspecified by the PEP; it should be possible to design an implementation that combines all the parts together more efficiently than the use of + (e.g. using a "string builder" object internally).