Python'da Veri Türü Nasıl Kontrol Edilir (tip vs isinstance)
Python'da veri türlerini nasıl kontrol edeceğinizi öğrenin. type() ile isinstance()'ın ne zaman kullanılacağını anlayın, özel sınıfları yönetin ve güvenli tür kontrolü doğrulamaları yazın.
Genel Bakış
Python dinamik olarak yazılan bir dildir; bu, değişkenlerin herhangi bir veri türünden değerleri tutabileceği ve yürütme sırasında türlerinin değişebileceği anlamına gelir. Bu esneklik ilk geliştirmeyi hızlandırırken aynı zamanda tamsayılar üzerinde aritmetik işlem yapmak veya dize yöntemlerini çağırmak gibi türe özgü işlemleri çalıştırmadan önce çalışma zamanında değişken türlerini doğrulamanızı da gerektirir.
Bir nesnenin veri türünü kontrol etmek için Python iki temel işlev sağlar: "type()" ve "isinstance()". 'type(obj)' işlevi, nesnenin kesin sınıf türünü döndürür. Bir sayının tam sayı olup olmadığını doğrulamak için "type(obj) == int" komutunu kullanabilirsiniz, ancak bu yöntem kalıtım yapılarını desteklemediğinden genellikle önerilmez (bir tam sayının alt sınıfı "False" olarak değerlendirilir).
Türleri kontrol etmenin önerilen Pythonic yolu "isinstance(obj, class_info)"dur. Bu işlev, bir nesnenin belirtilen sınıfın bir örneği mi yoksa ondan miras alınan herhangi bir alt sınıf mı olduğunu kontrol eder. Ayrıca, doğrulama kodunu son derece esnek ve sağlam hale getiren bir grup sınıfa (örneğin, `isinstance(value, (int, float))`) karşı kontrolü de destekler.
Kod ve Yürütme Çıkışı
Bu komut dosyası, hem type() hem de isinstance() kullanarak değişken türlerinin kontrol edilmesini gösterir ve kalıtımdaki farklılıkları gösterir.
value_int = 42
value_str = "hello"
# 1. Checking type using isinstance() (Recommended)
is_number = isinstance(value_int, int)
print(f"Is {value_int} an int? {is_number}")
# Checking against multiple possible types
is_num_or_str = isinstance(value_str, (int, float, str))
print(f"Is '{value_str}' int, float, or str? {is_num_or_str}")
# 2. Checking type using type() (For exact class matches)
print(f"Exact type of value_int: {type(value_int).__name__}")
print("Is value_int exactly an int?", type(value_int) is int)
# 3. Inheritance difference
class CustomList(list):
pass
my_list = CustomList([1, 2, 3])
print("\nInheritance testing:")
print("isinstance(my_list, list):", isinstance(my_list, list))
print("type(my_list) is list:", type(my_list) is list)Is 42 an int? True
Is 'hello' int, float, or str? True
Exact type of value_int: int
Is value_int exactly an int? True
Inheritance testing:
isinstance(my_list, list): True
type(my_list) is list: FalseAdım Adım Uygulama
- Genel tür kontrolü (kalıtıma uygun) için isinstance(variable, type_name) öğesini kullanın.
- Birden fazla sınıfı kontrol etmek için isinstance(variable, (int, float)) gibi bir dizi türü iletin.
- Type(değişken) türünü yalnızca alt sınıfları göz ardı ederek tam sınıf eşleşmesini garanti etmeniz gerektiğinde type_name kullanın.
Sıkça Sorulan Sorular
Neden isinstance(), type() yerine tercih ediliyor?
isinstance() nesne mirasını ve polimorfizmi destekler. Yerleşik bir türü alt sınıflandırırsanız, isinstance() onu ana sınıfın bir örneği olarak doğru bir şekilde tanıyacaktır; type() ise False olarak değerlendirilecektir.
Bir nesnenin çağrılabilir olup olmadığını (bir işlev gibi) nasıl kontrol edebilirim?
Nesne bir işlev gibi çağrılabiliyorsa True değerini döndüren yerleşik callable() işlevini kullanın.
İlgili Konular
Python'da nasıl sınıf oluşturulacağını öğrenin. __init__ yapıcısında, örnek yöntemlerinde, self anahtar sözcüğünde ve nesne örneklemesinde ustalaşın.
Python'da İstisnalar Nasıl Ele AlınırPython'da try, hariç, else ve nihayet bloklarını kullanarak istisnaları nasıl ele alacağınızı öğrenin. Hatasız ve çökmeye dayanıklı Python kodu yazın.
Önerilen Python Kaynakları
İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.
Python Türü İpuçları
Python'da yazım ipuçlarını nasıl yazacağınızı öğrenin. Kod kalitesini artırın, otomatik tamamlamayı etkinleştirin ve statik kod analizi için mypy'den yararlanın.
Python Türü Dönüşümleri Hile Sayfası
Python'da örtülü ve açık tür dönüşümlerini öğrenin. Dizeler, tam sayılar, kayan noktalar, listeler, kümeler ve sözlükler arasında dönüştürme yapın.
Python vs TypeScript: Dinamik Komut Dosyası Oluşturma ve Tip Güvenli Web
Python ve TypeScript'i karşılaştırın. Yapısal tip sistemler, dekoratör meta verileri, derleyici kontrolleri, web çalışma süreleri ve geliştirici araçları hakkında bilgi edinin.