Python NameSpace ( İsim Alanları )

Python NameSpace

Python’da her tanımladğınız değişken ( ya da nesne ) her yerden ulaşılamaz veya değeri değiştirelemez. Örneğin bir işlev içerisinde tanımlanmış değişkenlere sadece o işlev içerisinde erişebilir. Örneğin şöyle basit bir işlev tanımlıyalım :

deneme() işlevinin altında bir x değişkeni tanımlandı. bu değişkene sadece fonksiyon altında erişebiliriz.

Şimdi değişkenine fonksiyon dışında erişim sağlıyalım.

ÇIKTI şöyle olucaktır :

Gördüğünüz gibi x değişkenine fonksiyon dışından erişmek istediğimizde, x’in tanımlanmamış olduğunu söylüyor. Dışarıda bir x değişkeni tanımlıyalım.

Durumun çıktısı şöyle olucatır :

99 değeri fonksiyon olan deneme() den gelen değerdir. 5 değeri ise fonksiyon dışında tanımlanan, x değerinden gelen veridir.

Görüldüğü gibi x’in fonksiyon içerisindeki değeri değişmemiştir. Fonksiyon içerisinde tanımlanan tüm değişkenler (veya nesneler) sadece o işlevin içerisinden erişibilir. Bununla birlikte dışarıdan tanımlanmış olan değişkenlere işlevlerin altından erişebilirsiniz.

Dışarıdan bir y değişkeni tanımlıyalım :

Bir fonksiyon altından bu değere erişmeye çalışalım.

Sonuç olarak :

Buradan hemen şu çıkarımda bulunmanız normaldir : daha alt seviyede bir isim alanından daha üst seviyedeki bir alanındaki nesnelere ulaşabilirsiniz. Ancak burada dikkatli olmanız gerekir, eğer işlev içerisinde daha alt satırlara üst düzeydeki bir değişken ile aynı isimde bir değişken tanımlarsanız problem yaşarsınız, Örneğin :

Şunu unutmuyalım ki bir isim alanındaki (namespace) tüm nesneler, o alanın dışındakilerden bağımsızdır ve aynı isimler kullanabilir. Ancak bir üst alandaki aynı isimli bir nesne tanımlayacaksanız, bunu tanımlamadan kullanmaya kalkışmayın.

En üst düzeydi isim alanında tanımlanmış değişkenlerin ( ya da nesnelerin) diğer alanlardan değiştirilmediğini gördük. Ancak bu tam olarak doğru değil. Şimdi yukarıdaki işlevimin başında y değişkeni küresel (global – hertarafta geçerli) olduğunu belirtirsek, işlevlerin içersinde erişebilir ve değerini değiştirebiliriz. Şimdi yukarıdaki fonksiyonu şu şekilde değiştirelim.

Burada yaptığımız değişiklik işlevin başında y değişkeninin küresel olduğunu belirtmek için global ifadesinin kullanılmasıdır. Fonksiyonumuzu çağıralım :

İşlemin Çıktısı :

Şimdi hata ile karşılaşmadık.

Python NameSpace

Global ifadesini kullanmaktan münkün olduğu kadar kullanmaktan sakınmalısınız. Bir değişenin her yerde geçerli ve değerinin değiştirilmesi çok uzun programlarda kaçınılmaz olduğu da bir gerçektir. Ancak Python nesne tabanlı bir programlama dili olduğundan nesne içerisinde tanımlanmiş bir değişken nesne içerisinde her tarafta geçerlidir. Böylelikli bu dertten kurtulmuş oluruz.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.