Python'un tip sistemini anlamak, bu zorlu hatayı çözmenin anahtarıdır.

Bir nesneden veri almaya çalışırken bunun yerine bir "nesne alt simge olamaz" hatası mı görüyorsunuz? Sorun şu ki, yanlış veri türünü indeksliyorsunuz.

Abone olunabilir türler ve bu hatayı nasıl çözeceğiniz hakkında her şeyi öğrenin.

Python'da "Abone Olabilir" Ne Demektir?

Python'da "indislenebilir" terimi, ayrı ayrı erişebileceğiniz birden çok değeri depolayan bir veri türü anlamına gelir. İndislenebilir bir veri türünden belirli bir değere, köşeli parantez ([]) gösterimini kullanarak dizini aracılığıyla erişebilirsiniz.

Dizinlenebilir olmayan bir veri türündeki öğelere erişmeye çalışırsanız, Python bir "TypeError: nesne abone olunamaz" istisnası oluşturur.

Aşağıdaki veri türleri Python'da belirtilebilir: listeler, dizeler, demetler ve sözlükler.

liste_örnek = [1, 3, 5, "Idowu"]
string_example = "Idowu Omisola"
tuple_example = (1, 3, 5, "Idowu")
dict_example = {"isim": "Idowu", "Dil": "Yoruba"}

yazdır (liste_örnek[0]) # 1
yazdır (dize_örnek[3]) # w
yazdır (tuple_example[1]) # 3
yazdır (dict_example["isim"]) #idowu

instagram viewer

Bununla birlikte, kümeler, tamsayılar, değişkenler ve Boolean'lara indeksleme yoluyla erişilemez, bu nedenle alt simge olamazlar:

float_example = 12.45
int_örnek = 12367
bool_example = Doğru
set_example = {1, 3, 5, "Piton"}

yazdır (float_example[1])
yazdır (bool_example[2])
yazdır (int_example[2])
yazdır (set_example[2])

Bu ifadelerin her birini çalıştırmaya çalışmak, "nesne alt simge olamaz" istisnasını verir:

İstisnayı Çözme

Her bir veri türüne erişim kurallarını anladığınızda, "nesne alt simge olamaz" istisnasını çözmek daha kolaydır. Dizine eklemeye çalıştığınız nesnenin veri türünü kontrol ederek Python hata ayıklama işleminize başlayın.

float_example = 12.45
int_örnek = 12367
bool_example = Doğru
set_example = {1, 3, 5, "Piton"}

yazdır (tür (float_example)) #
yazdır (tür (int_example)) #
yazdır (tür (bool_example)) #
yazdır (tür (set_example)) #

Veri türünün indislenebilir olmadığını belirledikten sonra, onu dizine eklenebilir bir türe dönüştürmek sorunu çözer. Veriler şuraya aitse bu kullanışlıdır: üçüncü taraf bir API. Tamsayı, kayan nokta ve Boolean gibi veri türlerini bir dizgeye dönüştürmek, onları alt simge yapılabilir hale getirir:

yazdır (str (float_example)[:2]) # 12
yazdır (str (int_example)[:2]) # 12
yazdır (str (bool_example)[:2]) #Tr

hatta yapabilirsin ortaya çıkan Python dizelerini değiştir istediğin gibi. Tamsayı ve kayan nokta ile uğraşıyorsanız, çıktıda orijinal veri türünü korumak isteyebilirsiniz. Bunu yapmak için, ortaya çıkan değeri dize olarak dizine ekledikten sonra orijinal veri türüne dönüştürün:

convert_float = float (str (float_example)[:2])
convert_int = int (str (int_example)[:2])

# 12.0 Veri türü:
yazdır (converted_float, f'Veri türü:{tür (converted_float)}')

# 12 Veri tipi:
yazdır (converted_int, f'Veri türü:{tür (dönüştürülmüş_int)}')

Bir küme gelince, onu bir listeye dönüştürebilirsiniz. kullanarak bir set nesnesini bir listeye dönüştürebilseniz de, liste (set) Python one-liner, bu sonuç listesindeki öğe konumlarını korumaz. Korunan öğe konumlarına sahip bir liste elde ettiğinizden emin olmak için Python'un lambda işlevini şu şekilde kullanın:

set_example = {1, 3, 5, "Piton"}
dönüştürülmüş = sıralanmış (set_example, anahtar=lambda x: (isintance (x, str), x))

yazdır (dönüştürülmüş[3]) # Piton

Usta Python Hata Ayıklama

Python'un sorunsuz bir öğrenme eğrisi vardır. Ancak, onlarla nasıl başa çıkacağınızı bilmiyorsanız, basit istisnalar sizi hayal kırıklığına uğratabilir. Kodunuzun hatalarını ayıklamayı öğrenmek ve problem çözmeye zaman ayırmak, Python kodlama hatalarını ve istisnalarını düzeltmek için uzun bir yol kat eder.