Hubungan Variabel dengan Objek
Dalam Python, variabel adalah nama yang menunjuk ke sebuah objek. Reassignment dapat membuat nama itu menunjuk ke objek lain. Nama lain yang masih merujuk ke objek lama tidak ikut berubah.
Ketika Python mengeksekusi x = 2, Python mengevaluasi ekspresi lalu mengikat nama x pada objek integer yang dihasilkan. Alokasi, penggunaan ulang objek, dan lokasi memori fisiknya adalah detail implementasi yang tidak boleh diasumsikan oleh program.
Cara Kerja Variabel dan Memori
Built-in id() mengembalikan bilangan bulat yang mengidentifikasi sebuah objek secara unik selama masa hidup objek tersebut. CPython biasanya memakai alamat memori objek sebagai dasar nilai itu, tetapi Python tidak menjamin cara yang sama pada setiap implementasi.
# Membuat variabel x dengan nilai 2
x = 2
print(x) # Output: 2
print(id(x)) # Identitas objek bergantung pada implementasi
# Membuat variabel y yang merujuk ke variabel x
y = x
print(y) # Output: 2
print(y is x) # Output: True
# Membuat variabel z dengan nilai yang sama
z = 2
print(z) # Output: 2
print(z == x) # Output: True
# Jangan mengandalkan z is x. Python dapat memakai kembali objek sebagai optimasiAssignment y = x membuat kedua nama merujuk pada objek yang sama pada saat itu. Jika kamu membuat nilai lain yang setara, perbandingan dengan == akan bernilai benar, tetapi Python tetap dapat menyimpannya sebagai objek terpisah. Beberapa implementasi Python memakai kembali objek immutable tertentu. Kode yang benar tidak boleh bergantung pada optimasi tersebut.
Karakteristik Variabel Python
Saat kamu memberi nilai pada sebuah nama, ingat dua hal. Python langsung mengikat nama itu pada sebuah objek tanpa deklarasi terpisah. Setelah itu, kamu dapat mengikat nama yang sama pada objek bertipe berbeda.
Tidak Ada Deklarasi Variabel
Python mengikat nama ketika assignment dijalankan, tanpa deklarasi variabel terpisah. Objek memiliki tipe, dan type(value) menampilkan tipe objek yang sedang ditunjuk oleh sebuah nama.
# Python tidak memerlukan deklarasi variabel
nama = "Budi" # String
umur = 25 # Integer
tinggi = 175.5 # Float
aktif = True # Boolean
# Python menentukan tipe data secara otomatis
print(type(nama)) # Output: <class 'str'>
print(type(umur)) # Output: <class 'int'>
print(type(tinggi)) # Output: <class 'float'>
print(type(aktif)) # Output: <class 'bool'>Tipe Data Dinamis
Python memakai dynamic typing: setiap objek memiliki tipe, sedangkan nama yang sama dapat diikat ulang pada objek dari tipe berbeda saat program berjalan.
# Variabel dengan tipe data dinamis
data = 42 # Integer
print(f"Nilai: {data}, Tipe: {type(data)}")
data = "Hello World" # String
print(f"Nilai: {data}, Tipe: {type(data)}")
data = [1, 2, 3] # List
print(f"Nilai: {data}, Tipe: {type(data)}")
data = 3.14 # Float
print(f"Nilai: {data}, Tipe: {type(data)}")Aturan Nama Variabel
Nama variabel harus memenuhi aturan berikut agar dapat diterima oleh Python. Nama boleh memuat huruf, angka, dan garis bawah, tetapi tidak boleh diawali angka dan tidak boleh sama dengan kata kunci yang dipakai Python.
Komponen Nama Variabel
Identifier dimulai dengan underscore atau huruf Unicode. Karakter berikutnya boleh berupa huruf, underscore, atau digit seperti . Python menerima banyak identifier non-ASCII, tetapi nama snake_case ASCII yang deskriptif biasanya lebih mudah diketik, dicari, dan dipakai lintas tools.
# Nama variabel yang valid
nama_siswa = "Ahmad" # Menggunakan huruf dan underscore
nilai1 = 85 # Menggunakan huruf dan angka
_total = 100 # Dimulai dengan underscore
MAX_SIZE = 1000 # Huruf besar semua
camelCase = "valid" # Gaya camelCase
snake_case = "valid" # Gaya snake_case
print(nama_siswa, nilai1, _total, MAX_SIZE, camelCase, snake_case)Aturan Wajib
Beberapa aturan wajib yang harus kamu patuhi dalam penamaan variabel Python. Nama variabel tidak boleh dimulai dengan angka. Python akan menghasilkan error sintaks jika kamu mencoba membuat variabel yang dimulai dengan angka.
# Nama variabel yang BENAR
data1 = "valid"
data_2 = "valid"
_data3 = "valid"
# Nama variabel yang SALAH (akan menyebabkan error)
# 1data = "invalid" # SyntaxError
# 2nilai = "invalid" # SyntaxError
# 9test = "invalid" # SyntaxError
print(data1, data_2, _data3)Sensitivitas Huruf Besar Kecil
Python membedakan antara huruf besar dan huruf kecil dalam nama variabel. Ini berarti nama, Nama, dan NAMA adalah tiga variabel yang berbeda.
# Python membedakan huruf besar dan kecil
nama = "budi"
Nama = "Siti"
NAMA = "Ahmad"
print(f"nama: {nama}") # Output: nama: budi
print(f"Nama: {Nama}") # Output: Nama: Siti
print(f"NAMA: {NAMA}") # Output: NAMA: Ahmad
# Ketiga variabel ini berbeda satu sama lain
print(nama == Nama) # Output: False
print(Nama == NAMA) # Output: FalseKata Kunci yang Tidak Boleh Digunakan
Python memakai beberapa kata sebagai bagian dari sintaks, sehingga kata-kata tersebut tidak dapat digunakan sebagai nama variabel. Memberi nilai pada salah satu kata itu menghasilkan SyntaxError sebelum program berjalan.
Daftar Kata Kunci Python
Kata kunci tetap berikut tidak boleh dipakai sebagai identifier. Kelompok tabel menunjukkan kegunaannya dalam sintaks.
| Peran | Kata kunci |
|---|---|
| Logika dan nilai | and, or, not, True, False, None |
| Percabangan dan iterasi | if, elif, else, for, while, break, continue, pass |
| Definisi dan lingkup | def, class, lambda, return, yield, global, nonlocal |
| Import dan alias | import, from, as |
| Error dan konteks | try, except, finally, raise, assert, with |
| Operasi lain | async, await, del, in, is |
Sebaliknya, soft keyword seperti match, case, type, dan _ hanya khusus pada konteks sintaks tertentu. keyword.iskeyword("match") bernilai False, sedangkan keyword.issoftkeyword("match") bernilai True.
# Contoh penggunaan yang SALAH (akan menyebabkan error)
# if = 10 # SyntaxError: invalid syntax
# for = "hello" # SyntaxError: invalid syntax
# def = 25 # SyntaxError: invalid syntax
# class = "test" # SyntaxError: invalid syntax
# Cara yang BENAR untuk nama variabel serupa
kondisi_if = 10
loop_for = "hello"
fungsi_def = 25
kelas_class = "test"
print(kondisi_if, loop_for, fungsi_def, kelas_class)Memeriksa Kata Kunci
Python menyediakan modul keyword untuk memeriksa apakah suatu kata adalah kata kunci atau tidak.
import keyword
# Melihat semua kata kunci Python
print("Jumlah kata kunci:", len(keyword.kwlist))
print("Daftar kata kunci:")
for i, kw in enumerate(keyword.kwlist, 1):
print(f"{i:2d}. {kw}")
# Memeriksa apakah suatu kata adalah kata kunci
print(f"\nApakah 'if' kata kunci? {keyword.iskeyword('if')}")
print(f"Apakah 'nama' kata kunci? {keyword.iskeyword('nama')}")
print(f"Apakah 'class' kata kunci? {keyword.iskeyword('class')}")Nama Variabel yang Mudah Dibaca
Setelah aturan sintaks terpenuhi, pilih nama yang menyatakan arti setiap nilai. Nama seperti total_harga menyampaikan lebih banyak kepada pembaca berikutnya daripada th, dan kebiasaan itu menjaga program panjang tetap terbaca berbulan-bulan kemudian.
Nama yang Bermakna
Gunakan nama variabel yang menjelaskan dengan jelas apa yang disimpan dalam variabel tersebut. Nama yang bermakna membuat kode lebih mudah dipahami, baik oleh diri sendiri maupun orang lain.
# Nama variabel yang KURANG BAIK
h = 175
w = 70
a = 25
# Nama variabel yang BAIK
tinggi_badan = 175
berat_badan = 70
umur = 25
# Menghitung BMI dengan nama variabel yang jelas
bmi = berat_badan / ((tinggi_badan / 100) ** 2)
print(f"BMI: {bmi:.2f}")
# Nama variabel menjelaskan nilai yang disimpan
print(f"Tinggi: {tinggi_badan} cm")
print(f"Berat: {berat_badan} kg")
print(f"Umur: {umur} tahun")Panjang Nama yang Sesuai
Hindari nama variabel yang terlalu panjang karena akan membuat kode sulit dibaca. Sebaliknya, nama yang terlalu pendek mungkin tidak memberikan informasi yang cukup.
# Nama terlalu panjang (KURANG BAIK)
tinggi_badan_siswa_kelas_12_ipa_semester_ganjil = 175
# Nama terlalu pendek (KURANG BAIK)
h = 175
# Nama yang tepat (BAIK)
tinggi_siswa = 175
tinggi = 175 # Jika konteks sudah jelas
# Untuk variabel penghitung, nama pendek dapat diterima
for i in range(10):
print(f"Iterasi ke-{i}")
# Untuk data yang lebih kompleks, gunakan nama yang jelas
jumlah_siswa = 30
rata_rata_nilai = 85.5Gaya Penulisan yang Konsisten
Konvensi Python menyarankan gaya snake_case untuk nama variabel. Kata-katanya dipisahkan dengan underscore dan ditulis dengan huruf kecil.
# Gaya snake_case (DIREKOMENDASIKAN untuk Python)
nama_lengkap = "Ahmad Budi"
tanggal_lahir = "1995-05-15"
alamat_rumah = "Jl. Merdeka No. 123"
# Gaya camelCase (lebih umum di JavaScript/Java)
namaLengkap = "Ahmad Budi" # Tidak salah, tapi kurang Python-like
# Gaya PascalCase (biasanya untuk nama class)
NamaLengkap = "Ahmad Budi" # Tidak disarankan untuk variabel
# Konsistensi dalam satu program
skor_matematika = 90
skor_fisika = 85
skor_kimia = 88
rata_rata_skor = (skor_matematika + skor_fisika + skor_kimia) / 3
print(f"Rata-rata skor: {rata_rata_skor:.2f}")Menghindari Kebingungan
Hindari menggunakan karakter yang dapat menyebabkan kebingungan, terutama huruf yang mirip dengan angka.
# Karakter yang dapat membingungkan (HINDARI)
# l = 1 # Huruf 'l' mirip angka '1'
# I = 1 # Huruf 'I' mirip angka '1'
# O = 0 # Huruf 'O' mirip angka '0'
# Alternatif yang lebih jelas
panjang = 1 # Gunakan kata yang jelas
indeks = 1 # Atau nama yang lebih deskriptif
kosong = 0 # Nama yang menjelaskan maksud
# Contoh penggunaan dalam konteks yang jelas
jumlah_item = 10
for nomor in range(1, jumlah_item + 1):
print(f"Item nomor {nomor}")
# Variabel boolean dengan nama yang jelas
is_active = True
has_permission = False
can_edit = TrueContoh Penggunaan Variabel dalam Program
Program berikut menggunakan variabel untuk menghitung luas dan keliling persegi panjang.
import math
# Program menghitung luas dan keliling persegi panjang
print("=== Kalkulator Persegi Panjang ===")
# Input dari pengguna
panjang = float(input("Masukkan panjang (cm): "))
lebar = float(input("Masukkan lebar (cm): "))
if not (math.isfinite(panjang) and math.isfinite(lebar) and panjang > 0 and lebar > 0):
raise ValueError("Ukuran harus positif dan berhingga")
# Perhitungan
luas = panjang * lebar
keliling = 2 * (panjang + lebar)
# Menampilkan hasil
print(f"\nHasil Perhitungan:")
print(f"Panjang: {panjang} cm")
print(f"Lebar: {lebar} cm")
print(f"Luas: {luas} cm²")
print(f"Keliling: {keliling} cm")Dalam program ini, panjang dan lebar menamai dua input, sedangkan luas dan keliling menamai hasil perhitungan. Pemeriksaan menolak ukuran yang tidak positif atau tidak berhingga sebelum menghitung. Dengan panjang 5 dan lebar 3, hasilnya adalah luas 15.0 cm² dan keliling 16.0 cm. Teks yang bukan angka ditolak oleh float().
Nama variabel yang konsisten membuat kode Python lebih mudah dibaca. Saat mempelajari perubahan objek dan argumen fungsi, bedakan equality, identity, dan reassignment karena ketiganya menjawab pertanyaan yang berbeda.