Karakter Dizisi Bitiştirme

Python'daki karakter dizileri değiştirilemezdir. Bu durum yeni başlayan programcıların sıklıkla farkında olmadan hatalar yapmalarına sebep olur. Değiştirilemezlik bazı avantaj ve dezavantajları beraberinde getirir. Artı sütununda karakter dizilerinin sözlüklerde anahtar olarak kullanılması ve bireysel kopyalarının pek çok değişken cilti (bindingi) arasında kullanılabilmesi bulunmaktadır. (Python otomatik olarak bir ve iki karakterli karakter dizilerini paylaşır.) Eksi sütununda ise verilmiş bir karakter dizisinin tüm a'larını b yapın gibi bir şey söyleyememeniz bulunmaktadır. Bunun yerine istenen özelliklere uygun yeni bir karakter dizisi oluşturmalısınız. Bu sürekli kopyalamalar Python programları içerisinde önemli verimsizliklere yol açabilir.

Karakter dizisi bitiştirmede şu örnek koda bakılarak süre kıyaslaması yapılabilir. join kullanılan örneğin zamanının daha az olduğunu ve yazım şeklindeki farklılığın da bu süreyi daha aza çektiğini göreceksiniz.

Bundan kaçının:

		s = ""
		for substring in list:
    		s += substring
		
	

Bunun yerine s = "".join(list) kullanın. İlki büyük karakter dizileri oluştururken yapılan genel ve felaket bir hatadır. Benzer şekilde ardışık olarak karakter dizisi bitleri üretiyorsanız,

		s = ""
		for x in list:
    		s += some_function(x)
	

yerine

		slist = [some_function(elt) for elt in somelist]
		s = "".join(slist)
	

kullanın.

Bundan kaçının:

		out = "<html>" + head + prologue + query + tail + "</html>"
	

Yerine bunu kullanın:

		out = "<html>%s%s%s%s</html>" % (head, prologue, query, tail)
	

Hatta daha iyi okunabilirlik için sözlük yerdeğiştirmesi kullanın (bunun verimlilikle bir ilgisi yoktur):

		out = "<html>%(head)s%(prologue)s%(query)s%(tail)s</html>" % locals()
	

Son ikisi özellikle pek çok CGI betiğinin çalışımının peşpeşe yığılmasından sonra daha hızlı çalışacak, ayağa kalkması ve değiştirilmesi daha kolay olacaktır. Ek olarak, işleri yavaş şekilde gerçeklemek dile eklenen zengin kıyaslamalar ile Python 2.0 sürümünde daha yavaş hale gelmiştir. Şimdi Python sanal makinesinin iki karakter dizisinin bitiştirmesinin asıl olacağına karar vermesi daha uzun sürmektedir. (Python'un tüm yöntem aramalarını çalışma zamanında yaptığını unutmayın.)