str Sınıfı ve İşlemleri - 1

8905

String yani str dediğimiz şey Python’da aslında bir sınıftır, adı da str sınıfıdır. Biz stringleri tek tırnak, iki tırnak, üç tek tırnak ya da üç çift tırnak ile yarattığımızda aslında str sınıfı türünden bir nesne yaratmış olmaktayız.

str sınıfının bir değiştirilemez, immutable bi sınıf olduğunu görmüştük. Yani bir nesne yarattıktan sonra onun üzerinde bir değişiklik yapamayız.

str de Seqeunce Type’tır

Tıpkli listeler, demetler gibi string’ler de Python’da seqeunce type grubundadır. Yani onu oluşturan karakterlerden oluşan bir dizilim gibi düşünülebilirler.

String’lerin karakterlerine de liste ve demetlerde olduğu gibi [] operatörü ile erişebiliriz. Örneğin

>>> s = 'alper'

>>> s[2]
'p'

>>> type(s[2])
<class 'str'>

Python’da, Java ve C# gibi bazı dillerde olduğu gibi tek bir karakteri temsil eden, char gibi, bir tür yoktur. İndeksle eriştiğimiz zaman da yine tek bir karakter içeren str nesnesi elde etmiş oluruz.

String’ler immutable olduğu için indeksle erişsek de değişim yapamayız.

>>> s = 'alper'

>>> s[2] = 'k'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

len() Fonksiyonu

Built-in len() fonksiyonu ile bir string’in uzunluğu elde edilebilir. Örneğin:

>>> s = 'alper'
>>> len(s)
5

>>> k = ''
>>> len(k)
0

Negatif İndeks

Demet ve listelerde olduğu gibi burada da negatif indeks kullanabiliriz.

8958

>>> s = 'ankara'

>>> s[-1]
'a'

>>> s[-2]
'r'

Dilimleme, Slicing

String dilimlendiği zaman yine bir string elde ederiz. Dilimlemeyi de demet ve listelerde olduğu gibi yapabiliriz. Yine [::-1] ile ters çevirebiliriz.

>>> s = 'ankara'

>>> s[2:6]
'kara'

>>> s[1:3]
'nk'

>>> s[2:-2]
'ka'

>>> s[::-1]
'arakna'

Stringlerin Toplanması, +

İki string’i topladığımız zaman bir string nesnesi yaratılır. Bu string nesnesi toplanan nesnelerin birleştirilmesi ile oluşturulur.

>>> x = 'alper'
>>> y = 'yazar'
>>> x + y
'alperyazar'

Java ve C# gibi dillerde bir string ile başka bir türden nesne toplanabilir. Python’da ise böyle bir özellik yoktur. Yani Python’da biz int ile stryi toplayamayız örneğin. Bu tür durumlarda bizim explicit olarak str nesnesine dönüştürme yapmamız gerekir.

>>> a = 10

>>> 'a = ' + a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

>>> 'a = ' + str(a)
'a = 10'

Örneğin ayı biz strye elle çevirerek bir str ile toplamış olabiliyoruz.


String’ler immutable olduğu için biz s += k yazsak bile syi uzatmış olmuyoruz, yeni bir str oluşmuş oluyor. Yani s += k ile s = s + k aynı anlamdadır string’ler için. Oysa listelerde durum farklıydı, sona ekleme yapıyordu çünkü listeler değiştirilebilir nesnelerdir.

>>> s = 'alper'
>>> k = 'yazar'

>>> id(s)
547866001712

>>> s += k

>>> s
'alperyazar'

>>> id(s)
547867745008

Görüldüğü gibi s artık başka bir str nesnesini gösteriyor.

Yineleme - Repetition İşlemi

Liste ve demetlerde oldğu gibi string’lerde de yineleme yani repetition işlemi yapılabilir. Bu durumda string, n defa kendisi ile toplanmış olur. Eğer çarpılan değer pozitif bir değer değilse boş bir string elde edilir.

Örneğin:

>>> '*' * 10
'**********'

>>> '*' * 0
''

>>> '*' * -4
''

9101