SyntaxError adalah error yang paling cepat ditemui setiap orang belajar Python: satu tanda kutip kurang, satu titik dua hilang, dan interpreter menolak menjalankan program sama sekali. Error ini terasa menghentikan, tetapi sebenarnya paling ramah pemula — Python 3.12 memberi tahu lokasi kesalahan hingga posisi karakter, lengkap dengan saran perbaikan. Membaca pesan error dengan tenang adalah keterampilan yang mempercepat belajar. Chapter ini membedah anatomi SyntaxError, pola kesalahan paling umum, dan cara memanfaatkan petunjuk bawaan Python.
Anatomi Pesan SyntaxError #
Kita mulai dari contoh nyata. Program berikut lupa menutup string dengan tanda kutip:
print("Halo, dunia!)Output yang Dihasilkan:
File "sapa.py", line 1
print("Halo, dunia!)
^
SyntaxError: unterminated string literal (detected at line 1)Pesan ini punya empat bagian yang selalu muncul, dan membacanya dari bawah ke atas paling efektif:
- Baris terakhir (
SyntaxError: unterminated string literal ...): jenis error beserta penjelasannya — string tidak ditutup, terdeteksi di baris 1. - Baris
File "sapa.py", line 1: file dan nomor baris tempat kesalahan ditemukan. - Baris kode (
print("Halo, dunia!)): interpreter menampilkan ulang baris yang bermasalah. - Tanda sisip (
^): penunjuk posisi karakter tempat interpreter menyadari ada masalah — di sini tepat pada tanda kutip pembuka string yang tidak pernah ditutup.
Perhatikan urutan membaca yang disarankan: mulai dari pesan di baris paling bawah, lalu naik ke lokasi. Pola yang sama berlaku untuk semua SyntaxError.
SyntaxError Terjadi Sebelum Program Berjalan #
Satu fakta penting membedakan SyntaxError dari error lain: interpreter memeriksa seluruh file terlebih dahulu sebelum menjalankan satu baris pun. Akibatnya, kesalahan sintaks di baris ke-50 mencegah baris 1–49 yang sehat sekalipun untuk berjalan:
print("Baris ini valid.")
print("Baris ini juga valid.")
print("Baris ketiga salah tulis"Output yang Dihasilkan:
File "setengah.py", line 3
print("Baris ketiga salah tulis"
^
SyntaxError: '(' was never closedTidak ada satu baris pun tercetak — meskipun dua statement pertama valid, eksekusi tidak pernah dimulai. Ini berbeda dengan error runtime seperti NameError pada Chapter Memahami Sintaks Python yang muncul setelah baris-baris sebelumnya sempat berjalan.
Tiga Kesalahan Klasik #
Lupa Titik Dua #
Baris header seperti if wajib diakhiri titik dua. Tanpa titik dua, interpreter berhenti tepat di akhir kondisi:
stok = 5
if stok > 0
print("Barang tersedia.")Output yang Dihasilkan:
File "stok.py", line 2
if stok > 0
^
SyntaxError: expected ':'Perbaikannya satu karakter: tambahkan : setelah 0.
Kutipan Tidak Tertutup #
Sudah kita lihat di bagian anatomi: unterminated string literal. Yang perlu diingat, tanda kutip pembuka dan penutup harus sama — "Halo ditutup ", 'Halo ditutup '.
Kurung Tidak Tertutup #
Tanda kurung yang dibuka tanpa pasangan baru dilaporkan di baris terakhir file, karena interpreter memastikan ketiadaan penutup setelah seluruh kode terbaca:
print("Halo, dunia!"Output yang Dihasilkan:
File "total.py", line 1
print("Halo, dunia!"
^
SyntaxError: '(' was never closedKesalahan Umum Lainnya #
Beberapa pola kesalahan lain yang hampir selalu menimpa pemula, lengkap dengan pesan aslinya:
| Kesalahan | Contoh salah | Pesan Python |
|---|---|---|
= untuk perbandingan | if stok = 5: | invalid syntax. Maybe you meant '==' or ':=' instead of '='? |
print gaya Python 2 | print "Halo, dunia!" | Missing parentheses in call to 'print'. Did you mean print(...)? |
| Karakter tidak dikenal | print(“Halo”) | invalid character '“' (U+201C) |
| Indentasi tidak konsisten | campuran tab dan spasi | TabError: inconsistent use of tabs and spaces in indentation |
Dua baris pertama pada tabel di atas memperlihatkan fitur paling membantu di Python modern: saran did you mean. Ketika interpreter mendeteksi kode yang mirip dengan kode yang sah, Python mengusulkan perbaikannya secara langsung — = diusulkan menjadi ==, dan print tanpa kurung langsung diusulkan bentuk print(...). Pola yang sama juga bekerja pada NameError: salah mengetik Print memunculkan Did you mean: 'print'?.
Kesalahan indentasi pada baris terakhir tabel sudah dibahas tuntas pada Chapter Indentasi dan Code Block, lengkap dengan cara membaca IndentationError dan TabError yang keduanya adalah turunan SyntaxError.
Menghadapi error adalah bagian tak terpisahkan dari menulis kode — programmer berpengalaman pun masih bertemu SyntaxError setiap minggunya. Bedanya, mereka membacanya dalam hitungan detik karena terbiasa dengan pola-pola di atas. Dengan section ini selesai, fondasi menulis dan menjalankan program Python sudah berdiri; Section berikutnya membahas variabel dan tipe data — cara program menyimpan dan mengolah nilai.