BAB 7: Konstanta

Pahami konsep konstanta di Python, bedanya dengan variabel biasa, dan konvensi yang dipakai developer Python.

Di bab sebelumnya kita belajar bahwa nilai variabel bisa diubah kapan saja. Tapi tidak semua data di program seharusnya berubah — ada nilai-nilai yang sudah ditentukan sejak awal dan tidak boleh disentuh selama program berjalan. Untuk itu ada konstanta.

Variabel yang Tidak Boleh Berubah

Konstanta adalah nilai yang ditetapkan sekali dan tidak diubah sepanjang program. Contoh paling mudah: nilai matematika seperti 3.14159 untuk PI, atau batas maksimum skor dalam sebuah aplikasi kuis.

Tanpa konstanta, kamu mungkin menyimpan nilai-nilai itu di variabel biasa — dan risiko terbesarnya adalah nilai itu berubah secara tidak sengaja, entah karena salah ketik nama variabel atau karena kode yang tidak sengaja menimpanya.

Konvensi UPPER_CASE

Python tidak punya mekanisme bawaan yang benar-benar memblokir perubahan nilai. Tidak ada kata kunci const seperti di JavaScript. Sebagai gantinya, komunitas Python punya konvensi yang sudah disepakati luas: tulis nama konstanta dengan huruf kapital semua, pisahkan kata dengan garis bawah.

# config.py
SKOR_MAKSIMAL = 100
JUMLAH_SOAL = 20
NAMA_APLIKASI = "Kuis Python"

Ketika developer Python melihat nama variabel dengan huruf kapital semua, mereka langsung tahu: ini nilai yang tidak boleh diubah. Ini bukan penegakan teknis — Python tetap mengizinkan kamu mengubah nilainya — tapi sinyal yang jelas kepada siapa pun yang membaca kode.

Di Python, konstanta biasanya diletakkan di bagian paling atas file, sebelum kode lainnya. Ini memudahkan siapa pun yang ingin menyesuaikan konfigurasi program tanpa harus menelusuri seluruh kode.

Menggunakan Konstanta

Konstanta digunakan sama persis seperti variabel — kamu bisa cetak nilainya, pakai di kalkulasi, atau sisipkan ke f-string:

# kuis.py
SKOR_MAKSIMAL = 100
JUMLAH_SOAL = 20

skor_pengguna = 17  # dari 20 soal

nilai_akhir = (skor_pengguna / JUMLAH_SOAL) * SKOR_MAKSIMAL

print(f"Kamu menjawab benar {skor_pengguna} dari {JUMLAH_SOAL} soal.")
print(f"Nilai akhir kamu: {nilai_akhir}")
Kamu menjawab benar 17 dari 20 soal.
Nilai akhir kamu: 85.0

Perhatikan bahwa SKOR_MAKSIMAL dan JUMLAH_SOAL dipakai di kalkulasi tapi nilainya tidak pernah di-assign ulang. Jika suatu saat jumlah soal berubah jadi 25, kamu cukup ubah satu baris di atas — semua kalkulasi yang menggunakan JUMLAH_SOAL langsung menyesuaikan otomatis.

Penegakan dengan typing.Final

Jika kamu ingin penegakan yang lebih formal — terutama saat menggunakan type checker seperti mypy atau fitur analisis statis di VS Code — Python menyediakan Final dari modul typing:

# kuis.py
from typing import Final

SKOR_MAKSIMAL: Final = 100
JUMLAH_SOAL: Final[int] = 20

Final tanpa tipe (Final) membiarkan Python menebak tipenya sendiri. Final[int] mendeklarasikan secara eksplisit bahwa ini konstanta bertipe integer.

Dengan Final, type checker akan memperingatkan kamu jika ada kode yang mencoba mengubah nilainya — meski Python sendiri tetap tidak akan menghentikan eksekusi program.

typing.Final adalah petunjuk untuk type checker, bukan penegakan saat runtime. Jika kamu menulis SKOR_MAKSIMAL = 200 setelah deklarasi Final, Python tidak akan error — tapi mypy atau Pylance di VS Code akan menandainya sebagai pelanggaran.

Konstanta vs Variabel: Kapan Pakai yang Mana?

Berikut panduan sederhana untuk memutuskan:

SituasiGunakan
Nilai yang berubah sesuai input penggunaVariabel
Nilai yang dihitung ulang setiap kaliVariabel
Nilai konfigurasi yang tetap sepanjang programKonstanta
Nilai matematis atau fisika (PI, GRAVITASI)Konstanta
Batas atau limit (MAKS_PERCOBAAN, TIMEOUT)Konstanta

Latihan

Lanjutkan dari file kuis.py di atas:

  1. Tambahkan konstanta NILAI_LULUS dengan nilai 70. Tambahkan logika sederhana menggunakan print() untuk menampilkan apakah nilai_akhir di atas atau di bawah NILAI_LULUS — meski belum menggunakan if, kamu bisa cetak kedua nilai dan bandingkan secara manual.
  2. Ubah JUMLAH_SOAL menjadi 25 dan jalankan ulang program. Perhatikan bagaimana nilai_akhir berubah secara otomatis tanpa kamu harus mengubah bagian kalkulasi.
  3. Coba ganti nama konstanta SKOR_MAKSIMAL menjadi huruf kecil skor_maksimal. Jalankan dan lihat apakah Python memprotes — lalu kembalikan ke huruf kapital dan ingat mengapa konvensi ini penting.

Kita sudah mengenal dua cara menyimpan data: variabel yang bisa berubah dan konstanta yang seharusnya tidak. Tapi kita belum benar-benar membahas jenis data yang bisa disimpan. Angka bulat, angka desimal, teks, benar/salah — semuanya punya perilaku berbeda di Python. Di bab berikutnya, kita akan membongkar sistem tipe data Python dan memahami mengapa "22" dan 22 adalah dua hal yang sangat berbeda.

Referensi

  1. 1PEP 8 — Constants
  2. 2Python Docs — typing.Final