Buka Rahasia Scope Variabel dalam Fungsi Python: Kuasai Kode dan Hindari Kesalahan Fatal

Apa Itu Scope Variabel dalam Python?
def fungsi_luar():
x = "Hello"
def fungsi_dalam():
print(x) # Mengakses variabel enclosing
fungsi_dalam() # Output: Hello
fungsi_luar()Bagaimana kalau mau ubah x dari dalam? Kamu butuh kata kunci nonlocal:
def fungsi_luar():
x = "Hello"
def fungsi_dalam():
nonlocal x
x = "Hi there"
print(f"Dalam: {x}")
fungsi_dalam() # Output: Dalam: Hi there
print(f"Luar: {x}") # Output: Luar: Hi there
fungsi_luar()Tanpa nonlocal, Python akan buat variabel lokal baru di dalam fungsi_dalam.
Scope Built-in: Pahlawan Bawaan Python
Scope built-in adalah scope variabel level terakhir dalam aturan LEGB. Ini mencakup fungsi dan konstanta bawaan Python, seperti print(), len(), atau True. Contoh:
def hitung_panjang():
teks = "Python"
print(len(teks)) # len adalah built-in
hitung_panjang() # Output: 6Kamu bisa menimpa built-in, tapi hati-hati—ini bisa bikin kode membingungkan:
len = 10 # Menimpa len built-in
# print(len("halo")) # Error: 'int' object is not callableSaran: Hindari menimpa built-in kecuali benar-benar sengaja.
Aturan LEGB dalam Aksi
Mari kita lihat contoh yang menggabungkan semua scope variabel:
x = "Global" # Scope global
def luar():
x = "Enclosing" # Scope enclosing
def dalam():
x = "Lokal" # Scope lokal
print(f"Dalam: {x}")
dalam()
print(f"Luar: {x}")
luar()
print(f"Global: {x}")
# Output:
# Dalam: Lokal
# Luar: Enclosing
# Global: GlobalPython mencari variabel dari lokal ke built-in sesuai urutan LEGB. Kalau kamu hapus x = "Lokal", fungsi dalam akan pakai x dari enclosing, dan seterusnya.
Kesalahan Umum dan Cara Menghindarinya
Scope variabel bisa jadi jebakan kalau kamu tidak hati-hati. Berikut beberapa pitfalls yang sering terjadi:
1. Mengubah Global Tanpa Deklarasi
Contoh:
counter = 0
def tambah():
counter += 1 # Error: UnboundLocalError
tambah()Solusi: Pakai global:
counter = 0
def tambah():
global counter
counter += 1
tambah()
print(counter) # Output: 12. Salah Paham Enclosing pada Scope Variable
Contoh:
def luar():
var = 10
def dalam():
var += 1 # Error: UnboundLocalError
print(var)
dalam()
luar()Solusi: Gunakan nonlocal:
python
Wrap
Copy
def luar():
var = 10
def dalam():
nonlocal var
var += 1
print(var)
dalam()
luar() # Output: 113. Bayangan Variabel (Variable Shadowing)
Contoh:
nama = "Ani"
def ubah_nama():
nama = "Budi" # Hanya lokal, tidak ubah global
print(nama)
ubah_nama() # Output: Budi
print(nama) # Output: AniSolusi: Gunakan global kalau memang mau ubah variabel global.
Best Practices untuk Scope Variabel
Agar kode kamu bersih dan bebas masalah, ikuti tips ini:
1. Minimalkan Penggunaan Global
Scope Variabel global sering bikin kode sulit dilacak. Lebih baik kirim data lewat parameter:
def hitung_total(harga):
return harga + 10
print(hitung_total(50)) # Output: 602. Dokumentasikan dengan Docstrings
Jelaskan scope kalau perlu:
def proses_data(data):
"""
Memproses data lokal.
Args:
data (int): Input pengguna
Returns:
int: Hasil proses
"""
hasil = data * 2 # Lokal
return hasil3. Gunakan Type Hints
Tambahkan tipe untuk kejelasan (tren di 2025):
def tambah_angka(x: int) -> int:
return x + 5Contoh Praktis dan Latihan Scope Variable
Contoh 1: Kalkulator Sederhana
total = 0 # Global
def tambah_nilai(angka):
global total
total += angka
print(f"Total sekarang: {total}")
tambah_nilai(10) # Output: Total sekarang: 10
tambah_nilai(20) # Output: Total sekarang: 30Latihan 1: Cek Scope
Buat fungsi untuk menampilkan scope varable:
pesan = "Global"
def cek_scope():
pesan = "Lokal"
print(f"Di dalam: {pesan}")
cek_scope() # Output: Di dalam: Lokal
print(pesan) # Output: GlobalLatihan 2: Nested Counter
Buat penghitung dengan fungsi bersarang:
def counter():
hitung = 0
def tambah():
nonlocal hitung
hitung += 1
return hitung
return tambah
c = counter()
print(c()) # Output: 1
print(c()) # Output: 2Kesimpulan
Scope variabel dalam fungsi Python adalah konsep yang wajib kamu kuasai untuk jadi coder hebat. Dengan memahami lokal, global, enclosing, dan built-in, kamu bisa mengendalikan kode dengan lebih baik dan menghindari kesalahan fatal yang bikin frustrasi. Ingat aturan LEGB, terapkan best practices, dan jangan takut eksperimen!
Sekarang, coba tulis kode sederhana dengan scope variabel berbeda, mainkan variabelnya, dan lihat apa yang terjadi. Semakin banyak latihan, semakin jago kamu. Untuk tutorial Python lainnya, kunjungi terus pradha.id. Selamat coding, dan semoga sukses!
Sumber dan Referensi
- Python Scope, https://www.w3schools.com/python/python_scope.asp
- Python Variable Scope, https://www.programiz.com/python-programming/global-local-nonlocal-variables
- Python Scope & the LEGB Rule: Resolving Names in Your Code, https://realpython.com/python-scope-legb-rule/
Related Articles

Kuasai Import serta Penggunaan Modul Bawaan Python: Hindari Kesalahan Umum dan Panduan Lengkap
Kuasai import modul bawaan Python & hindari kesalahan umum dengan panduan lengkap modul bawaan seperti sys, os, dll

Master Fungsi Python: Parameter dan Return Value – Best Practices dan Common Pitfalls
Master fungsi Python dengan memahami parameter dan return value. Temukan best practices untuk coding dan kesalahan umum yang harus dihindari.

Menguasai Fungsi Python dengan Def: Rahasia Sukses Coding yang Bisa Jadi Kesalahan Fatal Jika Diabaikan!
Fungsi Python ibarat kotak perkakas programmer: alat serbaguna yang mengubah kode berantakan menjadi solusi elegan. Tapi hati-hati! Kesalahan kecil dalam
Dapatkan Artikel Terbaru!
Berlangganan newsletter kami untuk mendapatkan tips dan insight menarik langsung ke inbox Anda.
Kami tidak akan pernah membagikan email Anda (No Spam).