Ein häufiges Antimuster in Python besteht darin, eine Folge von Zeichenfolgen +
in einer Schleife zu verketten . Dies ist schlecht, da der Python-Interpreter für jede Iteration ein neues Zeichenfolgenobjekt erstellen muss und dies quadratische Zeit in Anspruch nimmt. (Neuere Versionen von CPython können dies anscheinend in einigen Fällen optimieren, andere Implementierungen jedoch nicht. Daher werden Programmierer davon abgehalten, sich darauf zu verlassen.) Dies ''.join
ist der richtige Weg.
Allerdings habe ich gehört , dass es gesagt ( hier auf Stack - Überlauf einschließlich ) , dass Sie sollten nie, nie verwenden +
für String - Verkettung, sondern immer verwenden ''.join
oder eine Format - String. Ich verstehe nicht, warum dies der Fall ist, wenn Sie nur zwei Zeichenfolgen verketten. Wenn mein Verständnis korrekt ist, sollte es keine quadratische Zeit dauern, und ich denke, es a + b
ist sauberer und lesbarer als entweder ''.join((a, b))
oder '%s%s' % (a, b)
.
Ist es eine gute Praxis, +
zwei Zeichenfolgen zu verketten? Oder gibt es ein Problem, das mir nicht bekannt ist?
+
es schneller oder langsamer ist? Und warum?
In [2]: %timeit "a"*80 + "b"*80
1000000 loops, best of 3: 356 ns per loop
In [3]: %timeit "%s%s" % ("a"*80, "b"*80)
1000000 loops, best of 3: 907 ns per loop
In [3]: %timeit "%s%s" % (a, b) 1000000 loops, best of 3: 590 ns per loop
In [4]: %timeit a + b 10000000 loops, best of 3: 147 ns per loop
__str__
. Siehe meine Antwort für Beispiele.