Indentation

10612

Not

Bu yazıdaki bilgilerin doğruluğundan tam emin değilim. 🤔

Çünkü TAB ile SPACE’i karıştırırsak, buradaki 8 kat kuralına dikkat etsek bile bu sefer de TabError: inconsistent use of tabs and spaces in indentation hatası alıyoruz. Hal böyle olunca buyazıdaki bilgileri nasıl kullanacağız bilmiyorum.

Bir satırın başından ilk boşluk olmayan karaktere kadarki SPACE sayısına girinti düzeyi yani indent level denmektedir. Eğer satır başındaki boşluk karakteri sadece SPACE karakteri ise, SPACE’lerin toplamı girinti sayısını vermektedir. Fakat satır başında TAB karakteri de olabilir.

Her TAB karakteri görüldüğünde o anki kadarki SPACE sayısını 8’in katlarına tamamlamak için n SPACE anlamına gelmektedir. n, 0 olmamaktadır.

SPACE SPACE SPACE   -> Düzey 3
SPACE TAB SPACE     -> Düzey 1 + 7 + 1 = 9
SPACE TAB TAB SPACE -> Düzey 1 + 7 + 8 + 1 = 17
TAB TAB TAB SPACE   -> Düzey 8 + 8 + 8 + 1 = 25

Kullandığımız editörde aşağıdaki boşluklar aynı gözükmüyor olsa bile Python yorumlayıcısı açısından aynıdır.

SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE
SPACE TAB SPACE

Her ikisi de 9 SPACE karakteridir.

Buradaki hesap editörün TAB hesabı ile aynı değildir. Python yorumlayıcısı kendi bir hesap yapar. Bir TAB, 8 SPACE olarak kabul edilir.


Python uyumlu editörlerin neredeyse hepsi programcı TAB’a basınca zaten n adet SPACE karakteri yerleştirir. Bu durumda yorumlayıcı zaten TAB karakterlerini görmez. Yani editörümüz zaten 8 SPACE kullanıyorsa editörde alt alta olan satırlar Python yorumlayıcısı tarafından da alt alta olarak kabul edilir.

Not

Hoca PEP 8 de önerilen TAB ayarı 8 SPACE diyor ama sanki ben 4 diye anlıyorum? ❓


Python programlarının girinti düzeyi 0 ile başlamak zorundadır. Yani programlar sola dayalı yazılır.

10667