Pada kebanyakan bahasa pemrograman, indentasi hanyalah kebiasaan kerapian: blok kode ditentukan oleh kurung kurawal {}, dan spasi di awal baris tidak berarti. Python mengambil jalan yang berbeda — indentasi adalah bagian dari sintaks. Sekelompok baris dengan kedalaman indentasi yang sama membentuk sebuah code block, dan interpreter membaca kedalaman tersebut untuk mengetahui statement mana yang masuk blok mana. Konsekuensinya tegas: salah satu spasi bisa membuat program menolak berjalan. Chapter ini membahas aturan indentasi, konvensi empat spasi, dan cara membaca pesan error yang muncul ketika indentasi salah.

Indentasi Menentukan Code Block #

Code block adalah kelompok statement yang diperlakukan sebagai satu kesatuan, misalnya isi dari sebuah percabangan. Untuk melihat wujud indentasi, kita pinjam dulu statement if — pembahasan mendalamnya ada pada Chapter if, elif, dan else; fokus kita sekarang adalah bentuk visualnya:

python
stok = 5

if stok > 0:
    print("Barang tersedia.")
    print("Bisa dibeli sekarang.")

print("Terima kasih sudah berkunjung.")

Output yang Dihasilkan:

text
Barang tersedia.
Bisa dibeli sekarang.
Terima kasih sudah berkunjung.

Mari kita telaah struktur baris-baris kode di atas:

  1. Baris 1 (stok = 5): statement di kolom paling kiri (level 0), bagian dari alur utama program.
  2. Baris 3 (if stok > 0:): baris header yang membuka blok baru. Dua ciri wajibnya: diakhiri titik dua (:) dan ditulis di kedalaman level sebelumnya.
  3. Baris 4–5 (print(...)): kedua baris di-indentasi empat spasi. Karena kedalamannya sama, keduanya menjadi isi blok if — keduanya hanya dijalankan ketika stok > 0 bernilai benar.
  4. Baris 7 (print(...)): kembali ke kolom paling kiri, sehingga keluar dari blok if dan selalu dijalankan.

Blok ditutup secara otomatis oleh baris pertama yang kembali ke kedalaman yang lebih dangkal. Tidak ada penutup khusus seperti } atau endif.

Peta Visual dan Aturan Empat Spasi #

Gambaran berikut memetakan kedalaman setiap baris pada program di atas:

text
stok = 5                       ← level 0: alur utama
if stok > 0:                   ← header blok, tetap di level 0
    print("Barang tersedia.")  ← level 1: isi blok (4 spasi)
    print("Bisa dibeli...")    ← level 1: isi blok (4 spasi)
print("Terima kasih...")       ← level 0: keluar dari blok

Indentasi boleh bersarang lebih dalam untuk blok di dalam blok. Program berikut menyarangkan if kedua di dalam if pertama:

python
nilai = 78

if nilai >= 75:
    print("Nilai bagus.")
    if nilai >= 90:
        print("Predikat: istimewa.")

print("Selesai memeriksa nilai.")

Output yang Dihasilkan:

text
Nilai bagus.
Selesai memeriksa nilai.

Karena 78 >= 90 bernilai salah, baris print("Predikat: istimewa.") di level 2 (delapan spasi) tidak dijalankan. Baris terakhir tetap berjalan karena berada di level 0.

Dokumen gaya resmi Python, PEP 8, menetapkan konvensinya: 4 spasi per tingkat indentasi. Konsistensi adalah syarat mutlak — semua baris dalam satu blok harus memakai kedalaman yang persis sama.

Kesalahan Indentasi yang Umum Terjadi #

Indentasi Kurang #

Statement isi blok yang tidak di-indentasi sama sekali membuat interpreter kehilangan isi blok:

python
stok = 5
if stok > 0:
print("Barang tersedia.")

Output yang Dihasilkan:

text
  File "stok.py", line 3
    print("Barang tersedia.")
    ^^^^^
IndentationError: expected an indented block after 'if' statement on line 2

Pesan ini sangat deskriptif: interpreter mencari isi blok setelah statement if pada baris 2, tetapi baris 3 datang tanpa indentasi. Perbaikannya: tambahkan 4 spasi di awal baris 3.

Indentasi Berlebih #

Kebalikannya — meng-indentasi baris yang seharusnya berada di level 0 — sama-sama ditolak:

python
print("Halo, dunia!")
    print("Ini baris kedua.")

Output yang Dihasilkan:

text
  File "sapa.py", line 2
    print("Ini baris kedua.")
IndentationError: unexpected indent

Interpreter tidak sedang mengharapkan blok baru, sehingga indentasi pada baris 2 dianggap kesalahan.

TabError: Mencampur Tab dan Spasi #

Karakter tab dan spasi terlihat sama di layar, tetapi berbeda bagi interpreter. Jika keduanya dicampur dalam satu file, Python menolak menebak maksud kita:

python
stok = 5
if stok > 0:
    print("Barang tersedia.")      # baris ini memakai 4 spasi
	print("Bisa dibeli sekarang.")  # baris ini memakai satu karakter tab

Output yang Dihasilkan:

text
  File "tab-dan-spasi.py", line 4
    print("Bisa dibeli sekarang.")  # baris ini memakai satu karakter tab
TabError: inconsistent use of tabs and spaces in indentation

Pada contoh di atas, baris 3 di-indentasi dengan 4 spasi, sedangkan baris 4 di-indentasi dengan satu karakter tab. Kedua bentuk ini terlihat sama di layar, tetapi interpreter menolak mencampurnya dan mengangkat TabError.

IndentationError dan TabError sama-sama turunan dari SyntaxError, sehingga keduanya terdeteksi sebelum program berjalan. Dengan menguasai aturan indentasi, kita siap membahas dua cara menjelaskan kode kepada manusia: komentar dan docstring.