Cara Menggunakan Variabel Global dengan Python (Kata Kunci global)

Pelajari cara kerja variabel global dengan Python. Memahami cakupan variabel, namespace lokal vs global, dan cara mengubah variabel menggunakan kata kunci global.

Coba Solusi ini di Editor

Ikhtisar

Memahami namespace dan pelingkupan variabel sangat penting untuk menulis perangkat lunak bebas bug dengan Python. Cakupan menentukan bagian mana dari program Anda yang dapat mengakses atau memodifikasi suatu variabel. Variabel yang dideklarasikan di luar semua fungsi ada dalam lingkup global dan dapat dibaca di mana saja dalam modul.

Namun, masalah muncul ketika suatu fungsi mencoba mengubah (menetapkan kembali) variabel global. Secara default, ketika Python melihat tugas di dalam suatu fungsi, ia mengasumsikan bahwa variabel tersebut bersifat lokal pada fungsi tersebut. Jika Anda mencoba mengubah variabel global tanpa mendeklarasikannya sebagai variabel global, Python akan membuat variabel lokal dengan nama yang sama, membiarkan variabel global tidak berubah (atau memunculkan `UnboundLocalError`).

Untuk memberi tahu Python secara eksplisit bahwa Anda ingin mengubah variabel di namespace global daripada membuat variabel lokal, Anda harus mendeklarasikannya menggunakan kata kunci `global` di dalam fungsi. Meskipun penggunaan variabel global terkadang diperlukan, hal ini umumnya dianggap sebagai praktik buruk dalam desain perangkat lunak besar karena membuat status sulit dilacak dan di-debug.

Kode & Output Eksekusi

Skrip ini mendemonstrasikan pembacaan variabel global, jebakan bayangan variabel, dan modifikasi variabel global menggunakan kata kunci global.

global_variables.py
Coba di Editor
counter = 10 # Global variable

def read_counter():
    # Reading a global variable works out-of-the-box
    print("Reading global counter:", counter)

def shadow_counter():
    # Attempting to assign without 'global' creates a local variable
    counter = 20 # Shadowing
    print("Inside shadow function:", counter)

def modify_counter():
    global counter # Declaring we are writing to global scope
    counter = 50
    print("Inside modify function:", counter)

read_counter()
shadow_counter()
print("Counter after shadow function:", counter) # Remains 10

modify_counter()
print("Counter after modify function:", counter) # Now 50
Keluaran Terminal
Reading global counter: 10
Inside shadow function: 20
Counter after shadow function: 10
Inside modify function: 50
Counter after modify function: 50

Implementasi Langkah demi Langkah

  • Deklarasikan variabel yang perlu diakses secara global di luar cakupan fungsi apa pun.
  • Baca variabel global di dalam fungsi apa pun tanpa menambahkan deklarasi khusus.
  • Gunakan kata kunci global (misalnya penghitung global) di dalam fungsi jika Anda perlu mengubah nilai variabel global.
  • Batasi penggunaan variabel global untuk mencegah kebingungan ruang lingkup dan polusi namespace.

Pertanyaan yang Sering Diajukan

Apa itu variabel yang membayangi dengan Python?

Shadowing terjadi ketika variabel yang dideklarasikan di dalam lingkup lokal (seperti fungsi) memiliki nama yang sama dengan variabel di lingkup global luar. Variabel lokal menutupi variabel global, sehingga untuk sementara tidak dapat diakses di dalam cakupan tersebut.

Apa perbedaan antara kata kunci global dan nonlokal?

global digunakan untuk mengakses variabel yang ditentukan dalam lingkup modul terluar. nonlocal digunakan di dalam fungsi bersarang untuk mengakses variabel yang ditentukan dalam lingkup fungsi terlampir (luar).

Topik Terkait

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.