Tipler Neden Önemli
Bir tip, Python'a bir değerin nasıl davranması gerektiğini söyleyen bir kategoridir. İki tam sayıyı toplamak aritmetik anlamına gelir; iki string'i toplamak birleştirmek anlamına gelir; bir string'e tam sayı eklemek bir hatadır. Bir değerin tipi, onda hangi işlemlerin anlamlı olduğunu belirler.
Python'un küçük, dostça bir yerleşik tipler kümesi vardır. Bunlardan dördünü — int, float, str, bool — yazdığın neredeyse her programda kullanırsın. Geri kalanı, verileri koleksiyonlar halinde düzenlemeye başladığında ortaya çıkar.
Sayılar: int ve float
İki tür sayı var ve Python sana hangisini vereceğini nasıl yazdığına bakarak seçer:
Ondalık nokta yok mu? Bir int alırsın. Ondalık nokta var mı? Bir float alırsın. Aritmetik onları serbestçe karıştırır — bir float içeren herhangi bir işlem bir float üretir:
Python'daki tam sayılar belleğinin izin verdiği kadar büyük olabilir — taşma yok, sabit 32 ya da 64 bit tavanı yok. 2 ** 1000 hesaplayabilirsin ve Python sana her basamağı geri verir.
Float'lar her dilde olduğu gibi IEEE 754 kurallarını izler, bu da birkaç klasik sürprize yol açar:
Bu 0.3 değil 0.30000000000000004 yazar. Python hatası değil — her dilde ikili kayan noktalı aritmetik böyle çalışır. Kesin ondalıklara ihtiyacın olduğunda (örneğin para için) decimal modülüne başvur. Diğer her şey için görüntüleme sırasında yuvarlama genellikle yeterlidir.
String'ler: str
String'ler karakter dizileridir. Tek tırnak ya da çift tırnakla sar — açılış ve kapanış tırnağı eşleştiği sürece Python hangisini kullandığına aldırmaz:
Üçlü tırnaklı string'ler (""" ... """) birden fazla satıra yayılır:
String'lerin zamanla öğreneceğin devasa bir API'si var — dilimleme, .upper(), .split(), .replace() gibi metotlar ve sana f"Hello, {name}" veren f-string biçimlendirmesi. Hemen ardından string'lere ayrılmış ayrı bir sayfa var.
Boolean'lar: bool
Tam olarak gösterildiği gibi yazılmış iki değer — True ve False, başta büyük harfle. Karşılaştırmalar boolean üretir:
Perde arkasında True ve False aslen 1 ve 0'dır; bu da kaç koşulun doğru olduğunu saymak istersen boolean'ları toplayabileceğin anlamına gelir:
None: Değerin Yokluğu
None, Python'un "değer yok" demesinin yoludur. Açıkça bir şey döndürmeyen fonksiyonlar None döner. Ayrıca bir yer tutucu olarak da kullanırsın:
Kural, is None ve is not None ile test etmektir — == None ile değil. is kimlik kontrolü yapar ve aslında kastettiğin budur.
List, Tuple, Set, Dictionary
Bunlar dört yerleşik koleksiyon tipidir. Her biri kendi sayfasında ayrıntıyla ele alınır; ama tanıyabilmen için hızlı bir taslağı burada:
Genel kurallar:
- List: değişmesini beklediğin bir dizi. Eklemek, çıkarmak, sıralamak — hepsi tamam.
- Tuple: değişimden korumak istediğin bir dizi. Genellikle
(x, y)koordinatları gibi sabit biçimli kayıtlar için kullanılır. - Set: tekrarın bir hata olacağı benzersiz öğelerden oluşan bir torba.
- Dict: anahtara göre arama. JSON şeklindeki yapı.
Tipler Arası Dönüşüm
Python, riskli olacağında senin için tipleri otomatik olarak dönüştürmez. Bir tam sayıyı string'e ya da string'i sayıya çevirmek istediğin şeydir, talep etmen gerekir:
Bir dönüşüm mantıklı değilse — örneğin int("hello") — Python ValueError fırlatır ve ona ne beslediğini söyler. Hata, açıklanmış, düzelt ve devam et.
Tip Kontrolü
Bilmeye değer iki araç:
type() REPL'de hızlı bir bakış için harikadır. isinstance() gerçek kodda kullandığın şeydir; çünkü kalıtımla iyi anlaşır ve aynı anda birden fazla tipe karşı kontrol edebilir.
Hızlı Bir Tanıtım Alıştırması
Aşağıdaki bloğu olduğu gibi çalıştırmayı dene, sonra birkaç değeri değiştir ve tiplerin neye dönüştüğüne bak:
for'u henüz anlamana gerek yok — oraya geleceğiz — ama bu sana yerleşik tiplerin bir bakışta hissini verir.
Veriye Uyan Tipi Seç
Şimdi her tipi ezberlemek zorunda değilsin. Bir tanesini gördüğünde tanıyabilmelisin ve veri oluştururken doğrusunu seçebilmelisin. "Bu sabit mi değişir mi? Benzersiz mi değil mi? Anahtarla mı pozisyonla mı arıyorum?" Bu dört soru vakaların yüzde doksanında koleksiyon tipini seçer.
Sırada: string'lere derinlemesine — çünkü neredeyse her programda temas edeceğin tek veri tipi onlardır.
Sıkça Sorulan Sorular
Python'daki ana veri tipleri nelerdir?
Sayılar (int ve float), string'ler (str), boolean'lar (bool), None ve dört koleksiyon tipi — list, tuple, set ve dict. Python kodunda gördüğün diğer her şey bunların artı bir avuç daha (bytes, complex, frozenset) üzerine inşa edilmiştir.
Python'da bir değerin tipini nasıl kontrol ederim?
type() ile sar: type(42) <class 'int'> döner, type('hi') <class 'str'> döner. Doğru/yanlış kontrolü için isinstance(value, int) kullan — alt sınıfları da ele aldığı için daha esnektir.
Python statik mi dinamik mi tiplidir?
Dinamik tiplidir. Bir değişken herhangi bir türde değere işaret edebilir ve aynı değişken yaşam boyunca tip değiştirebilir. Bu, Java ya da C++ gibi dillerden farklıdır; onlarda değişkenin tipini bir kez tanımlarsın ve değiştiremezsin.