Kalau kamu sering utak-atik kode Python, pasti pernah dengar istilah *scope* dan *umur variabel*. Dua konsep ini kayak aki dan mesin di mobil, keduanya saling bantu supaya program berjalan lancar. Nah, di artikel ini kita bakal bedah tuntas gimana variabel berperilaku dalam Python, khususnya soal batas jangkauan (*scope*) dan masa hidupnya (*lifetime*). Pahami ini supaya kamu bisa nulis kode yang lebih rapi, efisien, dan bebas bug.
—
Apa Itu Scope Variabel?
Scope itu wilayah dimana variabel bisa diakses. Dalam bahasa sederhana, bayangkan kamu lagi garasi yang punya beberapa ruangan: ruang mesin, ruang bodi, ruang cat. Variabel juga punya “ruangan” sendiri di dalam program. Ada variabel yang cuma bisa dipakai di dalam fungsi, ada yang bisa diakses di seluruh program.
Di Python, ada empat level scope utama, yang biasa kita ingat dengan aturan LEGB:
– **Local** — variabel di dalam fungsi
– **Enclosing** — variabel di fungsi yang membungkus fungsi lain (jika ada nested function)
– **Global** — variabel di modul yang sama, tapi di luar fungsi
– **Built-in** — variabel bawaan Python
Mari kita lihat contoh scope lokal sederhana.
def mesin():
bahan_bakar = "Bensin" # variabel lokal fungsi mesin
return f"Mesin memakai {bahan_bakar}"
print(mesin()) # Output: Mesin memakai Bensin
# print(bahan_bakar) # Error: bahan_bakar tidak dikenal di sini
Variabel `bahan_bakar` cuma hidup di dalam fungsi `mesin()`. Kalau kamu coba akses dari luar, Python bakal bilang “Saya nggak kenal variabel itu!”
—
Variabel Global: Sahabat Seantero Program
Variabel global itu kayak aki utama yang bisa digunakan semua bagian mobil. Mereka dideklarasikan di luar fungsi dan bisa diakses di mana saja dalam file script tersebut.
bahan_bakar = "Pertamax" # variabel global
def mesin():
return f"Mesin ini menggunakan {bahan_bakar}"
print(mesin()) # Output: Mesin ini menggunakan Pertamax
print(bahan_bakar) # Output: Pertamax
Tapi hati-hati! Kalau di dalam fungsi kamu buat variabel dengan nama yang sama tanpa `global`, Python anggap itu variabel lokal baru, bukan yang global.
Kalau mau ubah nilai variabel global di dalam fungsi, kamu harus pakai keyword **global**:
bahan_bakar = "Pertalite"
def ganti_bahan_bakar():
global bahan_bakar
bahan_bakar = "Solar"
print(bahan_bakar) # Output: Pertalite
ganti_bahan_bakar()
print(bahan_bakar) # Output: Solar
Ini kayak kamu ganti oli mesin dari depan ke belakang — harus pakai alat khusus (*keyword global*), kalau nggak, oli nggak akan nyampe ke mesin.
—
Lifetime Variabel: Kapan Variabel Hidup dan Mati?
Selain scope, umur atau lifetime variabel juga penting. Kalau scope memberitahu kamu “dimana variabel bisa dipakai”, lifetime menjawab “berapa lama variabel itu ada di memori”.
Variabel lokal cuma hidup saat fungsi dipanggil, setelah itu hilang. Sedangkan variabel global hidup selama program berjalan.
Contoh untuk lifetimenya variabel lokal:
def hidup_sementara():
sparepart = "Filter Udara" # hidup di sini
print(f"Sparepart tersedia: {sparepart}")
hidup_sementara()
# print(sparepart) # Error: Variabel sudah tidak ada di luar fungsi
Variabel `sparepart` hidup hanya selama fungsi `hidup_sementara()` berjalan. Setelah fungsi selesai, variabel itu hilang dari memori.
—
Nested Function dan Scope Enclosing
Ada kalanya kamu bikin fungsi di dalam fungsi (nested function). Nah, disitu scope jadi sedikit lebih rumit karena ada *enclosing scope*.
Variabel di fungsi luar bisa diakses oleh fungsi dalam, tapi cuma baca saja, kecuali kamu pakai keyword `nonlocal` agar variabel bisa diubah.
Simak contoh berikut:
def bengkel():
alat = "Kunci Inggris" # variabel enclosing
def teknisi():
nonlocal alat
alat = "Kunci Pas" # ubah variabel enclosing
print(f"Teknisi pakai {alat}")
teknisi()
print(f"Bengkel pakai {alat}")
bengkel()
# Output:
# Teknisi pakai Kunci Pas
# Bengkel pakai Kunci Pas
Tanpa `nonlocal`, Python menganggap `alat = “Kunci Pas”` sebagai variabel lokal baru di `teknisi()`, bukan ubah variabel dari `bengkel()`.
—
Masa Depan: Dari Garasi ke Algoritma
Memahami scope dan lifetime variabel layaknya belajar bagian-bagian penting dalam mesin mobil. Kamu harus tahu bagian mana yang berfungsi di mana, dan seberapa lama ia bekerja. Dengan konsep yang jelas ini, kamu dapat menulis kode Python lebih efisien dan mudah maintenance — seperti modifikasi mobil yang tepat guna tanpa nambah masalah mesin.
Semoga pemahaman ini bisa jadi salah satu “kunci Inggris” kamu dalam ngoprek algoritma Python, biar proyek coding kamu makin lancar dan nyaman dibawa nge-gas!
Kalau sudah paham dasar ini, yuk coba praktikkan langsung di kode kamu! Jangan lupa explore lagi seri Python Algorithm lainnya di Otokreasi.com.
Selamat ngoding dan semangat modifikasi!




