Kapsamlar
Global Kapsam ve Lokal Kapsam
Python’da yer alan değişkenlerin,fonksiyonların ve sınıfların(class) bir kapsam alanı(scope) vardır.Nesnelerin geçerli ve etkin olduğu bu alanlara isim alanları adı verilir.Global Kapsam ve Lokal Kapsam
y=5 def Yaz(): y=8 return y print("fonksiyona ait y",Yaz()) print("fonksiyon dışındaki y",y)
Output:
fonksiyona ait y 8
fonksiyon dışındaki y 5
Görüldüğü gibi fonksiyonun içindeki y ve dışındaki y değerleri farklıdır.Çünkü ikisi farklı isim alanlarında oluşturulmuştur. Daha iyi anlayabilmek için iki y değişkenininde idlerini(kimlik numaralarını inceleyelim)
y=5 def Yaz(): y=8 return y print("fonksiyona ait y",id(Yaz())) print("fonksiyon dışındaki y",id(y))
fonksiyona ait y 1680829680
fonksiyon dışındaki y 1680829584
Python’da ana isim alanına global fonksiyonların içerisinde yer alan isim alanına ise lokal adı verilir.
Python’da bir değişkene erişilmek istendiğinde o değişken önce mevcut isim alanında aranır.Bulunamazsa üst isim alanlarında aranır.Daha net anlayabilmek için şu örneği inceleyelim.
y=5 def Yaz(): return y print("fonksiyona ait y",Yaz()) print("fonksiyon dışındaki y",y)
fonksiyona ait y 5
fonksiyon dışındaki y 5
y değişkeni fonksiyon içerisinde olmadığı için bir üst isim alanında yer alan değeri aldı.
Eğer değişken hem lokal hemde global alanda tanımlanmamışsa hata ile karşılaşılır.
def Yaz(): print(x)
Bu kod çalışmaz çünkü x değişkeni tanımlanmamıştır.
Lokal bir alanda tanımlanmış bir değişkeni global alana taşımak için global anahtar kelimesi kullanılır.Bu değişken üzerinde yapılacak değişiklik artık global alandaki değişkeni de etkileyecektir
y=5 def Yaz(): y=8 return y print("fonksiyona ait y",Yaz()) print("fonksiyon dışındaki
Output:
fonksiyona ait y 8
fonksiyon dışındaki y 5
Kod incelendiğinde lokalde 8 atanan y değişkeninin globaldeki y değişkeninden farklı olduğu görülmektedir.
y=5 def Yaz(): global y y=8 return y print("fonksiyona ait y",Yaz()) print("fonksiyon dışındaki y",y)
Output:
fonksiyona ait y 8
fonksiyon dışındaki y 8
Kod incelendiğinde lokal alanda global olarak tanımlanmış y değişkeninin artık global alandaki y değişkeni olduğu görülmektedir.
Bir sonraki yazımızda görüşmek dileğiyle