Lompat ke konten Lompat ke sidebar Lompat ke footer

Variabel Global, Lokal, dan Nonlocal dalam Python

Variabel merupakan tempat untuk menyimpan sebuah nilai dalam program. Ketika program semakin besar dan mulai menggunakan banyak fungsi, muncul konsep penting yang disebut ruang lingkup variabel. Ruang lingkup atau cakupan variabel menentukan bagian program yang dapat menggunakan sebuah variabel.

Sebelum mempelajari materi tentang Variabel Global, Lokal, dan Nonlocal dalam Python, terlebih dahulu pelajari materi tentang: Dictionary dalam Python: Pengertian, Cara Membuat, Mengakses, dan Mengolah Data, Fungsi dalam Python, dan Argumen Fungsi dalam Python.

Dalam Python terdapat beberapa jenis ruang lingkup variabel yang perlu dipahami, yaitu:
  • Variabel lokal.
  • Variabel global.
  • Variabel nonlocal.

Pemahaman mengenai ketiga jenis variabel tersebut penting karena sebuah variabel yang dibuat di satu bagian program belum tentu dapat digunakan secara langsung pada bagian program lainnya.

Variabel Lokal

Variabel lokal adalah variabel yang dibuat di dalam sebuah fungsi. Variabel tersebut hanya dapat digunakan selama berada dalam ruang lingkup fungsi tersebut.

Contoh:
def tampilkan_nama():
nama = "Budi"
print(nama)
tampilkan_nama()


Hasil:
Budi

Pada contoh tersebut, `nama` merupakan variabel lokal karena dibuat di dalam fungsi `tampilkan_nama()`. Variabel tersebut dapat digunakan di dalam fungsi:
def tampilkan_nama():
nama = "Budi"
print(nama)


Namun, variabel tersebut tidak dapat langsung digunakan dari luar fungsi:
def tampilkan_nama():
nama = "Budi"
tampilkan_nama()
print(nama)


Kode tersebut akan menghasilkan kesalahan karena `nama` hanya dikenal di dalam fungsi `tampilkan_nama()`.

Ciri-Ciri Variabel Lokal

Beberapa ciri variabel lokal adalah:
  • Dibuat di dalam fungsi.
  • Hanya dapat digunakan dalam fungsi tersebut.
  • Tidak dapat digunakan secara langsung dari luar fungsi.
  • Setiap pemanggilan fungsi dapat mempunyai nilai lokal sendiri.
  • Cocok digunakan untuk data yang hanya diperlukan dalam sebuah fungsi.

Contoh:
def hitung():
angka = 10
hasil = angka * 2
print(hasil)
hitung()


Variabel `angka` dan `hasil` merupakan variabel lokal.

Variabel Lokal pada Dua Fungsi

Dua fungsi dapat mempunyai variabel lokal dengan nama yang sama. Variabel tersebut tetap dianggap sebagai variabel yang berbeda.

Contoh:
def fungsi_satu():
nama = "Budi"
print(nama)
def fungsi_dua():
nama = "Siti"
print(nama)
fungsi_satu()
fungsi_dua()


Hasil:
Budi
Siti


Meskipun kedua fungsi menggunakan nama variabel `nama`, masing-masing variabel mempunyai ruang lingkup sendiri. Dengan demikian, perubahan variabel `nama` di dalam `fungsi_satu()` tidak secara otomatis mengubah variabel `nama` di dalam `fungsi_dua()`.

Variabel Global

Variabel global adalah variabel yang dibuat di luar fungsi.

Contoh:
nama = "Budi"
def tampilkan():
print(nama)
tampilkan()


Hasil:
Budi

Variabel `nama` dibuat di luar fungsi sehingga termasuk variabel global. Variabel global dapat dibaca dari dalam fungsi.

Contoh lain:
angka = 10
def tampilkan():
print(angka)
tampilkan()


Hasil:
10

Pada contoh tersebut, fungsi `tampilkan()` dapat membaca variabel global `angka`.

Membuat Variabel Global

Variabel global biasanya dibuat pada bagian utama program, bukan di dalam fungsi.

Contoh:
nama = "Andi"
umur = 16
def tampilkan_data():
print(nama)
print(umur)
tampilkan_data()


Hasil:
Andi
16


Karena `nama` dan `umur` dibuat di luar fungsi, keduanya dapat digunakan oleh fungsi tersebut untuk membaca data.

Membaca Variabel Global dari Dalam Fungsi

Variabel global dapat dibaca dari dalam fungsi tanpa menggunakan kata kunci khusus.

Contoh:
nilai = 80
def tampilkan_nilai():
print(nilai)
tampilkan_nilai()


Hasil:
80

Fungsi dapat menggunakan nilai `nilai` karena variabel tersebut berada di ruang lingkup global.

Mengubah Variabel Global

Masalah dapat muncul ketika sebuah fungsi ingin mengubah nilai variabel global.

Contoh:
angka = 10
def ubah():
angka = 20
print(angka)
ubah()
print(angka)


Hasil:
20
10


Pada contoh tersebut, `angka = 20` tidak mengubah variabel global. Python menganggap `angka` yang dibuat di dalam fungsi sebagai variabel lokal.

Akibatnya:
  • `angka` di dalam fungsi bernilai `20`.
  • `angka` di luar fungsi tetap bernilai `10`.

Kata Kunci global

Python menyediakan kata kunci `global` untuk memberitahukan bahwa sebuah variabel di dalam fungsi merujuk kepada variabel global.

Contoh:
angka = 10
def ubah():
global angka
angka = 20
ubah()
print(angka)


Hasil:
20

Perhatikan penggunaan:
global angka

Perintah tersebut membuat Python mengetahui bahwa `angka` yang digunakan di dalam fungsi adalah variabel global.

Contoh Penggunaan global

Berikut adalah contoh penggunaan global.

Contoh lain:
jumlah = 0
def tambah():
global jumlah
jumlah = jumlah + 1
tambah()
tambah()
tambah()
print(jumlah)


Hasil:
3

Setiap kali `tambah()` dipanggil, nilai variabel global `jumlah` bertambah satu.

Prosesnya:
  1. Nilai awal `jumlah` adalah `0`.
  2. Fungsi pertama dijalankan sehingga menjadi `1`.
  3. Fungsi kedua dijalankan sehingga menjadi `2`.
  4. Fungsi ketiga dijalankan sehingga menjadi `3`.
  5. Nilai `jumlah` ditampilkan.

Waktu Penggunaan Variabel Global

Variabel global dapat berguna dalam kondisi tertentu, misalnya:
  • Menyimpan nilai yang digunakan oleh beberapa fungsi.
  • Menyimpan konfigurasi program.
  • Menyimpan nilai tetap yang dibutuhkan oleh beberapa bagian program.
  • Membuat informasi tertentu tersedia untuk seluruh bagian utama program.

Namun, penggunaan variabel global sebaiknya dilakukan secara hati-hati. Jika terlalu banyak variabel global digunakan, program dapat menjadi lebih sulit dipahami dan lebih sulit diperbaiki.

Kekurangan Penggunaan Variabel Global

Variabel global memang praktis, tetapi penggunaannya secara berlebihan dapat menimbulkan beberapa masalah.

Beberapa masalah tersebut antara lain:
  • Nilai variabel dapat diubah oleh berbagai fungsi.
  • Sulit mengetahui bagian program yang mengubah nilai.
  • Program menjadi lebih sulit dipelihara.
  • Potensi kesalahan menjadi lebih besar.
  • Hubungan antarbagian program menjadi kurang jelas.

Contoh:
nilai = 100
def fungsi_satu():
global nilai
nilai = 50
def fungsi_dua():
global nilai
nilai = 20


Jika kedua fungsi tersebut digunakan dalam program yang panjang, perubahan nilai `nilai` dapat menjadi sulit dilacak. Karena itu, variabel lokal sering lebih disukai ketika sebuah data hanya diperlukan oleh fungsi tertentu.

Variabel Global dan Lokal dengan Nama Sama

Variabel global dan lokal dapat menggunakan nama yang sama.

Contoh:
nama = "Budi"
def tampilkan():
nama = "Siti"
print(nama)
tampilkan()
print(nama)


Hasil:
Siti
Budi


Alasan hasilnya berbeda, adalah karena:
  • `nama = "Budi"` merupakan variabel global.
  • `nama = "Siti"` merupakan variabel lokal.
  • Ketika berada di dalam fungsi, Python menggunakan variabel lokal.
  • Setelah keluar dari fungsi, variabel global tetap bernilai `"Budi"`.

Konsep Ruang Lingkup Bertingkat

Python dapat memiliki fungsi yang berada di dalam fungsi lainnya.

Contoh:
def luar():
nama = "Budi"
def dalam():
print(nama)
dalam()
luar()


Hasil:
Budi

Pada contoh tersebut terdapat dua fungsi:
  • `luar()` merupakan fungsi luar.
  • `dalam()` merupakan fungsi di dalam fungsi `luar()`.

Variabel `nama` dibuat pada fungsi `luar()` dan dapat dibaca oleh fungsi `dalam()`. Konsep ini berkaitan dengan variabel nonlocal.

Variabel Nonlocal

Variabel nonlocal adalah variabel yang berada pada fungsi luar, tetapi digunakan oleh fungsi yang berada di dalamnya. Kata kunci `nonlocal` digunakan untuk mengubah variabel tersebut dari fungsi bagian dalam.

Contoh:
def luar():
angka = 10
def dalam():
nonlocal angka
angka = 20
dalam()
print(angka)
luar()


Hasil:
20

Tanpa `nonlocal`, `angka = 20` di dalam fungsi `dalam()` akan dianggap sebagai variabel lokal untuk fungsi `dalam()`. Dengan `nonlocal`, Python mengetahui bahwa `angka` yang dimaksud adalah variabel pada fungsi `luar()`.

Contoh Perbedaan Lokal dan Nonlocal

Perhatikan contoh berikut:
def luar():
angka = 10
def dalam():
angka = 20
dalam()
print(angka)
luar()


Hasil:
10

Variabel `angka` di dalam `dalam()` merupakan variabel lokal untuk fungsi tersebut. Sekarang gunakan `nonlocal`:
def luar():
angka = 10
def dalam():
nonlocal angka
angka = 20
dalam()
print(angka)
luar()


Hasil:
20

Dengan `nonlocal`, perubahan dilakukan terhadap variabel `angka` yang terdapat pada fungsi `luar()`.

Perbedaan global dan nonlocal

`global` dan `nonlocal` memiliki tujuan yang berbeda.

global

Digunakan untuk mengakses atau mengubah variabel yang berada pada ruang lingkup global.

Contoh:
angka = 10
def ubah():
global angka
angka = 20


nonlocal

Digunakan untuk mengakses atau mengubah variabel pada fungsi luar ketika terdapat fungsi di dalam fungsi.

Contoh:
def luar():
angka = 10
def dalam():
nonlocal angka
angka = 20
dalam()


Perbedaan sederhananya:
  • global → variabel pada ruang lingkup program utama
  • nonlocal → variabel pada fungsi luar

Perbandingan Lokal, Global, dan Nonlocal

Berikut dijelaskan perbandaingan antara variabel lokal, variabel global, dan variabel nonlocal.

Variabel lokal

Berikut penjelasan tentang variabel lokal:
  • Dibuat di dalam fungsi.
  • Hanya berlaku pada fungsi tersebut.
  • Cocok untuk data sementara.
  • Tidak dapat digunakan langsung dari luar fungsi.

Variabel global

Berikut penjelasan tentang variabel global:
  • Dibuat di luar fungsi.
  • Dapat dibaca dari berbagai fungsi.
  • Dapat diubah menggunakan `global`.
  • Sebaiknya digunakan secara terbatas.

Variabel nonlocal

Berikut penjelasan tentang variabel nonlocal:
  • Digunakan pada fungsi yang berada di dalam fungsi lain.
  • Merujuk kepada variabel pada fungsi luar.
  • Dapat mengubah variabel fungsi luar menggunakan `nonlocal`.

Ringkasannya:
GLOBAL
↓
Fungsi luar
↓
NONLOCAL
↓
Fungsi dalam
↓
LOCAL

Contoh Program dengan Global

Berikut contoh sederhana penggunaan variabel global untuk menghitung jumlah pengunjung.
jumlah_pengunjung = 0
def tambah_pengunjung():
global jumlah_pengunjung
jumlah_pengunjung += 1
def tampilkan_jumlah():
print("Jumlah pengunjung:", jumlah_pengunjung)
tambah_pengunjung()
tambah_pengunjung()
tambah_pengunjung()
tampilkan_jumlah()


Hasil:
Jumlah pengunjung: 3

Variabel `jumlah_pengunjung` digunakan oleh beberapa fungsi.

Contoh Program dengan Variabel Lokal

Berikut contoh fungsi menghitung luas persegi panjang:
def luas_persegi_panjang(panjang, lebar):
luas = panjang * lebar
return luas
hasil = luas_persegi_panjang(10, 5)
print("Luas:", hasil)


Variabel `luas` merupakan variabel lokal. Variabel tersebut hanya diperlukan untuk proses perhitungan di dalam fungsi. Penggunaan variabel lokal seperti ini membuat fungsi lebih mandiri.

Contoh Program dengan Nonlocal

Berikut contoh sederhana penggunaan `nonlocal`:
def penghitung():
jumlah = 0
def tambah():
nonlocal jumlah
jumlah += 1
return jumlah
print(tambah())
print(tambah())
print(tambah())
penghitung()


Hasil:
1
2
3


Variabel `jumlah` berada di fungsi `penghitung()`, sedangkan fungsi `tambah()` berada di dalamnya. Kata kunci `nonlocal` memungkinkan fungsi `tambah()` mengubah nilai `jumlah`.

Hubungan Variabel dengan Fungsi

Pemahaman tentang ruang lingkup variabel sangat berkaitan dengan fungsi. Ketika membuat fungsi, perlu diperhatikan:
  • Variabel apa yang diperlukan?
  • Apakah variabel hanya digunakan di dalam fungsi?
  • Apakah variabel perlu digunakan oleh beberapa fungsi?
  • Apakah fungsi berada di dalam fungsi lainnya?
  • Apakah nilai variabel perlu diubah dari fungsi bagian dalam?

Jawaban atas pertanyaan tersebut membantu menentukan jenis variabel yang tepat.

Sebaiknya Menggunakan Variabel Lokal

Untuk program yang terstruktur, variabel lokal sering menjadi pilihan yang baik ketika data hanya diperlukan oleh sebuah fungsi.

Contoh:
def hitung_total(harga, jumlah):
total = harga * jumlah
return total


Variabel `total` tidak perlu dibuat sebagai variabel global karena hanya digunakan dalam proses fungsi. Keuntungan pendekatan ini:
  • Fungsi lebih mudah dipahami.
  • Data tidak mudah berubah dari bagian lain program.
  • Risiko kesalahan lebih kecil.
  • Fungsi dapat digunakan kembali dengan lebih mudah.

Menghindari Penggunaan global Secara Berlebihan

Kata kunci `global` bukan berarti harus digunakan setiap kali sebuah fungsi ingin mengubah data.

Contoh berikut:
nilai = 10
def ubah():
global nilai
nilai = 20


Dapat diganti dengan pendekatan yang menggunakan `return`:
def ubah(nilai):
nilai = 20
return nilai
nilai = 10
nilai = ubah(nilai)
print(nilai)


Pendekatan menggunakan parameter dan `return` sering membuat aliran data lebih jelas. Dengan cara tersebut, fungsi menerima data, memprosesnya, kemudian mengembalikan hasil.

Contoh Program yang Lebih Terstruktur

Perhatikan program berikut:
def hitung_nilai(nilai_tugas, nilai_ujian):
rata_rata = (nilai_tugas + nilai_ujian) / 2
return rata_rata
def tentukan_status(nilai):
if nilai >= 75:
return "Lulus"
else:
return "Belum Lulus"
nilai_akhir = hitung_nilai(80, 90)
status = tentukan_status(nilai_akhir)
print("Nilai:", nilai_akhir)
print("Status:", status)


Hasil:
Nilai: 85.0
Status: Lulus


Pada program tersebut, data dipindahkan melalui parameter dan `return`. Tidak diperlukan variabel global untuk menyimpan seluruh proses. Cara seperti ini membuat setiap fungsi mempunyai tugas yang jelas.

Baca Juga:

Kesalahan yang Sering Terjadi

Beberapa kesalahan umum dalam penggunaan ruang lingkup variabel antara lain:

pertama, Menggunakan variabel lokal di luar fungsi.
def proses():
hasil = 100
proses()
print(hasil)


Variabel `hasil` hanya tersedia di dalam fungsi.

kedua, Mengira variabel lokal mengubah variabel global.
angka = 10
def ubah():
angka = 20
ubah()
print(angka)


Hasil tetap:
10

ketiga, Lupa menggunakan global.
Jika memang diperlukan untuk mengubah variabel global.
angka = 10
def ubah():
global angka
angka = 20


keempat, Menggunakan nonlocal pada tempat yang salah.
`nonlocal` digunakan untuk variabel yang berada pada fungsi luar. Kata kunci tersebut bukan pengganti `global`.

Latihan Pemahaman

Berikut diberikana beberapa bentuk latihan pemahaman untuk meningkatkan kemampuan dalam membuat program Python.

Latihan 1

Perhatikan kode berikut:
angka = 10
def contoh():
angka = 20
print(angka)
contoh()
print(angka)


Tentukan hasil yang ditampilkan dan jelaskan mengapa kedua nilai tersebut berbeda.

Latihan 2

Ubahlah program berikut agar fungsi dapat mengubah variabel global:
nilai = 50
def ubah():
nilai = 100
ubah()
print(nilai)


Gunakan kata kunci yang sesuai.

Latihan 3

Buat program dengan ketentuan:
  • Terdapat fungsi `penghitung()`.
  • Di dalamnya terdapat variabel `jumlah`.
  • Terdapat fungsi `tambah()` di dalam `penghitung()`.
  • Fungsi `tambah()` menambah nilai `jumlah`.
  • Gunakan `nonlocal`.
  • Tampilkan hasil sebanyak tiga kali.

Hasil yang diharapkan:
1
2
3


Ringkasan Materi

Hal-hal penting yang perlu diingat:
  • Variabel lokal dibuat di dalam fungsi.
  • Variabel lokal hanya dapat digunakan dalam ruang lingkup fungsi tersebut.
  • Variabel global dibuat di luar fungsi.
  • Variabel global dapat dibaca dari dalam fungsi.
  • Kata kunci `global` digunakan ketika fungsi perlu mengubah variabel global.
  • Fungsi yang mempunyai variabel lokal dengan nama sama dengan variabel global akan menggunakan variabel lokal ketika berada dalam fungsi.
  • Fungsi dapat ditempatkan di dalam fungsi lain.
  • Variabel pada fungsi luar dapat digunakan oleh fungsi bagian dalam.
  • Kata kunci `nonlocal` digunakan untuk mengubah variabel pada fungsi luar.
  • `global` berkaitan dengan ruang lingkup global.
  • `nonlocal` berkaitan dengan ruang lingkup fungsi luar.
  • Variabel lokal membantu menjaga data agar hanya digunakan pada bagian program yang membutuhkan.
  • Penggunaan variabel global secara berlebihan dapat membuat program lebih sulit dikelola.
  • Parameter dan `return` dapat menjadi alternatif untuk memindahkan data antar fungsi.

Kesimpulan

Global, lokal, dan nonlocal merupakan konsep penting dalam Python karena menentukan bagaimana sebuah variabel dapat digunakan oleh bagian-bagian program.

Variabel lokal cocok untuk data yang hanya diperlukan oleh sebuah fungsi. Variabel global dapat digunakan ketika sebuah nilai memang perlu tersedia pada ruang lingkup program yang lebih luas. Sementara itu, variabel nonlocal digunakan pada struktur fungsi bersarang ketika fungsi bagian dalam perlu mengubah nilai yang berada pada fungsi luar.

Pemahaman mengenai ruang lingkup variabel akan membantu dalam membuat program yang lebih teratur. Ketika program mulai memiliki banyak fungsi, pemahaman ini juga membantu mencegah perubahan nilai yang tidak disengaja dan membuat hubungan antarbagian program lebih mudah dipahami.

Sebagai prinsip sederhana, gunakan variabel lokal ketika data hanya diperlukan oleh sebuah fungsi. Gunakan parameter dan `return` untuk mengirimkan data antar fungsi. Gunakan `global` dan `nonlocal` hanya ketika memang diperlukan oleh struktur program.

Referensi Tambahan:

Artikel ini akan dibaca oleh: Asri Alfaya Sayidah, Aulia Imroatun Fadlila, Avrilia Charista Asna, Bagus Rahul Ahmad Attaufa, dan Bimo Chandra.

7 komentar untuk "Variabel Global, Lokal, dan Nonlocal dalam Python"

  1. Kayaknya baru kemarin MPLS sekarang udah mau naik kelas 11 aja.

    BalasHapus
  2. Ku kira MPLS itu adalah makanan, ternyata tidak...

    BalasHapus
  3. Kenapa setiap siwa baru yang masuk ke sekolah harus diperkenalkan dulu dengan lingkungannya ya?

    BalasHapus
    Balasan
    1. Selamat datang di SMAN 8 Semarang, selamat belajar.

      Hapus
  4. Hiduplah Indonesia, jayalah SMAN 8 Semarang.

    BalasHapus
  5. Senangnya lihat anak-anak dalam keceriaan dan kebersamaan...

    BalasHapus
  6. Jadi ingat jaman sekolah dulu
    Kalau dulu namanya apa ya, kok saya lupa

    BalasHapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -