Instruksi nonlocal di Python
Ada kalanya dalam fungsi luar
terdapat variabel yang perlu diakses
dalam fungsi dalam. Mari deklarasikan variabel i
dalam fungsi outer.
Relatif terhadap fungsi dalam, variabel ini
akan menjadi variabel non-lokal (yang bersifat
global hanyalah variabel yang dideklarasikan
DI LUAR kode fungsi). Dan untuk fungsi inner
kita berikan penambahan satu ke i:
def outer():
i = 0
def inner():
i += 1 # akan menghasilkan error
inner()
return i
Namun bagi inner, variabel i
dianggap sebagai variabel lokal, Python menganggapnya
tidak terdeklarasi dan menampilkan error yang sesuai.
Dulu, error seperti ini diperbaiki
dengan menggunakan instruksi global. Namun
di sini i adalah variabel non-lokal,
oleh karena itu seharusnya digunakan instruksi
nonlocal. Instruksi ini mengambil nama-nama
variabel yang disebutkan ke ruang lingkup
terdekat, tidak termasuk yang global, artinya i
di dalam inner akan diambil dari variabel
yang dideklarasikan di atas fungsi tersebut:
def outer():
i = 0
def inner():
nonlocal i
i += 1
inner()
return i
print(outer()) # akan menampilkan 1
Dalam kode berikut, seorang programmer membuat kesalahan:
num = 10
def outer():
num = 5
def inner():
num -= 2
inner()
return num
print(outer())
Apa yang salah dengan kode ini? Temukan dan perbaiki kesalahan pembuat kode.
Dalam kode berikut, seorang programmer membuat kesalahan:
num = 3
def outer():
num += 1
tst = num
def inner():
tst = tst ** 3
inner()
return tst
print(outer())
Apa yang salah dengan kode ini? Temukan dan perbaiki kesalahan pembuat kode.