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:
| Situasi | Gunakan |
|---|---|
| Nilai yang berubah sesuai input pengguna | Variabel |
| Nilai yang dihitung ulang setiap kali | Variabel |
| Nilai konfigurasi yang tetap sepanjang program | Konstanta |
Nilai matematis atau fisika (PI, GRAVITASI) | Konstanta |
Batas atau limit (MAKS_PERCOBAAN, TIMEOUT) | Konstanta |
Latihan
Lanjutkan dari file kuis.py di atas:
- Tambahkan konstanta
NILAI_LULUSdengan nilai70. Tambahkan logika sederhana menggunakanprint()untuk menampilkan apakahnilai_akhirdi atas atau di bawahNILAI_LULUS— meski belum menggunakanif, kamu bisa cetak kedua nilai dan bandingkan secara manual. - Ubah
JUMLAH_SOALmenjadi25dan jalankan ulang program. Perhatikan bagaimananilai_akhirberubah secara otomatis tanpa kamu harus mengubah bagian kalkulasi. - Coba ganti nama konstanta
SKOR_MAKSIMALmenjadi huruf kecilskor_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.