Memahami Variabel Global, Lokal, dan Nonlokal Python
Memahami Variabel Global, Lokal, dan Nonlokal Python
Kuasai penggunaan variabel global, lokal, dan nonlokal dalam Python, dan ketahui kapan menerapkannya untuk kode yang bersih dan mudah dirawat.
Video: Python Local and Global Variables
Variabel Global
Dalam Python, variabel yang dideklarasikan di luar fungsi apa pun—di tingkat modul—adalah variabel global. Ia dapat dibaca dari mana saja dalam modul, tetapi harus dideklarasikan dengan kata kunci global jika Anda ingin memodifikasinya di dalam fungsi.
Contoh: membuat dan membaca variabel global
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Output
x inside: global x outside: global
Mencoba untuk menetapkan ulang x tanpa mendeklarasikannya global menghasilkan UnboundLocalError:
x = "global" def foo(): x = x * 2 print(x) foo()
Output
UnboundLocalError: local variable 'x' referenced before assignment
Untuk memodifikasi variabel global di dalam fungsi, gunakan kata kunci global:
x = "global" def foo(): global x x = x * 2 print(x) foo()
Output
globalglobal
Variabel Lokal
Sebuah variabel lokal didefinisikan di dalam tubuh fungsi dan hanya ada selama eksekusi fungsi tersebut. Ia tidak dapat diakses di luar fungsi.
Contoh: mengakses variabel lokal di luar ruang lingkupnya
def foo(): y = "local" foo() print(y)
Output
NameError: name 'y' is not defined
Mendefinisikan dan menggunakan variabel lokal dengan benar:
def foo(): y = "local" print(y) foo()
Output
local
Menggabungkan Variabel Global dan Lokal
Umum untuk menggunakan kedua ruang lingkup dalam modul yang sama. Kata kunci global memastikan bahwa variabel merujuk ke instance tingkat modul.
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Output
global global local
Saat variabel lokal berbagi nama dengan variabel global, mereka independen:
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Output
local x: 10 global x: 5
Variabel Nonlokal
Fungsi bersarang dapat mengakses dan memodifikasi variabel dari ruang lingkup enclosing (tetapi bukan global) menggunakan kata kunci nonlocal.
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Output
inner: nonlocal outer: nonlocal
Catatan: Memperbarui variabel nonlokal di dalam fungsi inner memperbarui variabel di ruang lingkup fungsi outer.