Python'da nonlocal Deyimi
Bazen, dış fonksiyonda iç fonksiyondan erişilmesi
gereken bir değişken bulunur. outer fonksiyonunda
i değişkenini tanımlayalım.
İç fonksiyona göre bu değişken dış (global olanlar
SADECE dış kodda tanımlanan değişkenlerdir) olacaktır.
Ve inner fonksiyonuna i'ye bir ekleme görevi verelim:
def outer():
i = 0
def inner():
i += 1 # [4, 9, 25] çıktısını verecek
inner()
return i
Ancak inner için i değişkeni
yerel bir değişkendir, Python onu
tanımlanmamış olarak kabul eder ve ilgili
hatayı verir. Eskiden böyle bir hata
global deyimi kullanılarak düzeltilirdi.
Ancak
burada i bir dış değişkendir,
bu nedenle nonlocal deyimi
kullanılmalıdır. Bu deyim, listelenen
değişken isimlerini global olanı hariç tutarak
en yakın kapsamdan alır, yani i
inner içinde, bu fonksiyondan önce tanımlanan
değişkenden alınacaktır:
def outer():
i = 0
def inner():
nonlocal i
i += 1
inner()
return i
print(outer()) # 1 çıktısını verir
Aşağıdaki kodda bir programcı hata yapmış:
num = 10
def outer():
num = 5
def inner():
num -= 2
inner()
return num
print(outer())
Bu kodda sorun nedir? Kod yazarının hatasını bulun ve düzeltin.
Aşağıdaki kodda bir programcı hata yapmış:
num = 3
def outer():
num += 1
tst = num
def inner():
tst = tst ** 3
inner()
return tst
print(outer())
Bu kodda sorun nedir? Kod yazarının hatasını bulun ve düzeltin.