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.) ''.join
Adalah 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 ''.join
atau 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 + b
lebih 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.