Selamlar herkese,internette araştırma yaptım ama anlamadım tam olarak.Local ve global değişkenlerden ayrı olarak non-local değişkenler nelerdir?Ne için kullanılırlar?Ne fayda sağlarlar?Teşşekkürler
Selam,
nonlocal
değişkenler, global
ile local
arasında kalan değişkenlerdir.
İç içe tanımlı fonksiyonlarda içteki fonksiyona göre dışta kalan fonksiyonda tanımlı bir değişken içteki fonksiyonda değiştirilmek istendiğinde kullanılır. Bu açıdan global
sözcüğünün kullanımına benzer.
Başka bir ifadeyle, eğer bir fonksiyonda tanımlı bir değişkeni, o fonksiyonun içinde tanımlanmış başka bir fonksiyonda değişikliğe uğratmak istersek nonlocal
ifadesini kullanırız.
Örnek: Aşağıdaki fonksiyonu çalıştırdığımızda UnboundLocalError
hatası alırız.
def f():
x = 1
def g():
x += 1
print(x)
return g()
f()
Bu hatadan kurtulmak için nonlocal
ifadesine ihtiyaç duyuyoruz. Yukarıdaki kodu şu şekilde değiştirelim:
def f():
x = 1
def g():
nonlocal x
x += 1
print(x)
return g()
f()
Burada, nonlocal
yerine global
ifadesini kullanamayız, çünkü f
fonksiyonu içinde tanımlanmış x
, local
bir değişkendir ve global
alanda tanımsızdır. nonlocal
yerine global
yazarsanız bu kez NameError
hatası alırsınız.
Öncelikle cevabınız için teşşekkür ederim.Emin olamadığım birşey var,kodunuzda x değişkeni local değişkendir dediniz.Yani nonlocal keywordu ile x’i non-local yapmadık mı?local değişkeni non-local yapabilir miyiz?
x
değişkeni f
fonksiyonunun scopunda tanımlı local
bir değişkendir. g
fonksiyonunda da tanımlıdır. Ama x
değişkenini g
fonksiyonunda değişikliğe uğratmak için onun g
fonksiyonunda local
bir değişken olmadığını belirtmek zorundayız. Bu yüzden nonlocal
ifadesi ile x
'i nonlocal
hale getirdik.
Anladım hocam teşşekkürler