Antipattern yang umum dalam Python adalah menggabungkan urutan string menggunakan +dalam satu lingkaran. Ini buruk karena penerjemah Python harus membuat objek string baru untuk setiap iterasi, dan akhirnya memakan waktu kuadrat. (Versi terbaru CPython tampaknya dapat mengoptimalkan ini dalam beberapa kasus, tetapi implementasi lain tidak dapat melakukannya, sehingga pemrogram tidak disarankan untuk mengandalkan ini.) ''.joinAdalah cara yang tepat untuk melakukan ini.
Namun, saya pernah mendengarnya mengatakan ( termasuk di sini di Stack Overflow ) bahwa Anda tidak boleh pernah menggunakan +untuk penggabungan string, tetapi selalu menggunakan ''.joinatau format string. Saya tidak mengerti mengapa ini terjadi jika Anda hanya menggabungkan dua string. Jika pemahaman saya benar, tidak perlu waktu kuadrat, dan menurut saya a + blebih bersih dan mudah dibaca daripada ''.join((a, b))atau '%s%s' % (a, b).
Apakah praktik yang baik menggunakan +menggabungkan dua string? Atau apakah ada masalah yang tidak saya sadari?
+lebih cepat atau lebih lambat? Dan mengapa?
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__. Lihat jawaban saya untuk contoh.