1. "IndentationError: unexpected indent" – Girintileme Sorunları
Python, girintilemeyi (indentation) çok ciddiye alır. Bir fonksiyonun içine yazacağınız kodu doğru şekilde girintilemezseniz, Python size "IndentationError: unexpected indent" hatasını verir. Bu hata, çoğunlukla tab ile boşluk arasında yapılan karışıklıklardan kaynaklanır.
Çözüm: Kodu düzgün girintilediğinizden emin olun. İdeal olarak, her yeni blok için 4 boşluk kullanın ve aynı tür girintilemeyi tutarlı bir şekilde devam ettirin.
def merhaba_dunya():
print("Merhaba, dünya!")
2. "TypeError: 'int' object is not callable" – Bir Değişkeni Fonksiyon Gibi Çağırmak
Bu hata, genellikle bir sayıyı ya da başka bir veri türünü fonksiyon gibi çağırmaya çalıştığınızda ortaya çıkar. Örneğin, bir değişkeni yanlışlıkla fonksiyon adı olarak kullandığınızda Python, bunun fonksiyon olmadığını size bildirir.
Çözüm: Sayı gibi bir objeyi fonksiyon gibi çağırmadığınızdan emin olun. Eğer aynı ismi bir değişken ve fonksiyon için kullandıysanız, isimleri değiştirmeyi deneyin.
int = 5
print(int(10)) # Bu hataya yol açacaktır
3. "IndexError: list index out of range" – Listede Geçersiz İndeks
Bir listeye erişmeye çalışırken, indeksin geçerli bir aralıkta olmaması bu hatayı ortaya çıkarır. Örneğin, 3 elemandan oluşan bir listeye 4. elemanı çağırmak, Python tarafından kabul edilmez.
Çözüm: Listenin boyutunu kontrol edin ve indeksin geçerli bir aralıkta olup olmadığını kontrol etmek için `len()` fonksiyonunu kullanın.
my_list = [1, 2, 3]
print(my_list[3]) # Bu hataya yol açar çünkü indeks 3 geçersizdir
4. "ValueError: too many values to unpack" – Çok Fazla Değer Ayrıştırma
Birden fazla değeri bir liste ya da tuple’dan ayırmaya çalışırken, Python’un beklediğinden fazla öğe almanız bu hataya sebep olur.
Çözüm: Ayrıştırdığınız öğe sayısının doğru olduğundan emin olun ve her zaman sağ tarafın sol tarafa uyacak şekilde olduğuna dikkat edin.
a, b = [1, 2, 3] # Bu hataya yol açar çünkü 3 değer var, ancak 2 değişken var
5. "AttributeError: 'NoneType' object has no attribute" – NoneType Hatası
Bu hata, `None` değerini bir nesne gibi kullanmaya çalıştığınızda ortaya çıkar. Python, `None` tipinin herhangi bir özelliği ya da metodu olmadığını bilir.
Çözüm: `None` tipi ile işlem yapmadan önce, o değerin gerçekten bir nesne olup olmadığını kontrol edin.
x = None
x.upper() # Hata verir çünkü NoneType üzerinde metod çalıştırılamaz
6. "ImportError: No module named" – Modül Bulunamıyor
Bir modülü import etmeye çalışırken, Python bu modülü bulamadığında bu hatayı alırsınız. Bu, modülün yüklü olmamasından veya yanlış bir yazım hatasından kaynaklanabilir.
Çözüm: Modülün yüklü olduğundan emin olun ve doğru yazım kullanarak import etmeyi deneyin.
import numpy as np # Bu hataya yol açmaz ancak yanlış yazım ImportError'a neden olur
7. "ZeroDivisionError: division by zero" – Sıfıra Bölme
Matematiksel bir işlemde, sıfıra bölme işlemi yapmaya çalıştığınızda bu hata meydana gelir.
Çözüm: Bölme işleminden önce, bölenin sıfır olup olmadığını kontrol edin.
x = 10 / 0 # Bu hataya yol açar
8. "SyntaxError: invalid syntax" – Söz Dizimi Hatası
Python, belirli kurallara göre yazılmalıdır. Eğer yazım hatası yapar ve Python kodunu anlamazsa, bu hata verir.
Çözüm: Kodu dikkatle kontrol edin ve özellikle parantezler ve tırnak işaretlerini doğru şekilde kapattığınızdan emin olun.
print("Hello, world!) # Bu hataya yol açar çünkü tırnak işaretinin kapanmadığı için sözdizimi hatası oluşur
9. "KeyError: 'key'" – Sözlükte Geçersiz Anahtar
Python sözlükleri anahtar-değer çiftleriyle çalışır. Eğer mevcut olmayan bir anahtara erişmeye çalışırsanız, bu hata meydana gelir.
Çözüm: Erişmek istediğiniz anahtarın sözlükte olup olmadığını kontrol edin. `in` operatörünü kullanarak anahtarın varlığını kontrol edebilirsiniz.
my_dict = {'name': 'John'}
print(my_dict['age']) # Bu hataya yol açar çünkü 'age' anahtarı mevcut değil
10. "MemoryError: Unable to allocate memory" – Bellek Hatası
Bu hata, programınızın bellek sınırlarını aştığı zaman meydana gelir. Çok büyük veri yapılarıyla çalışırken veya hatalı bellek yönetimi nedeniyle oluşabilir.
Çözüm: Programınızın kullandığı bellek miktarını gözden geçirin ve daha verimli veri yapılarını tercih edin.
my_large_list = [0] * (109) # Bu hataya yol açabilir çünkü çok fazla bellek kullanılır
Sonuç
Python, geliştiricilere büyük kolaylıklar sunsa da, bu dili öğrenirken karşılaşılan hatalar bazen moral bozucu olabilir. Ancak, doğru çözümleri uygulayarak ve kodu dikkatli bir şekilde yazmaya özen göstererek, bu hataların önüne geçebilirsiniz. Python'daki hataların çoğu, dikkatli gözlem ve doğru tekniklerle kolayca çözülebilir. Bu yazıda bahsettiğimiz hatalar, Python geliştiricilerinin sıklıkla karşılaştığı hatalardan sadece birkaçı. Her zaman sabırlı olun, hatalardan ders çıkarın ve kodlama yolculuğunuzda ilerleyin!