Python’da Değişkenler ve Kapsama Alanı (Scope)

Değişkenler

En basit haliyle bir değişken; hafızada tutulan verinin adresinden oluşan etikettir. Bu etiketi kullanarak istediğimiz kadar bu veriye ulaşabilir ve işleyebiliriz.

Bazı dillerde verinin tipini belirtmeniz gerekirken Python’da bu zorunluluk yoktur, bir değişkene önce tam sayı(int) sonra metin(string) verisi atayabilirsiniz.

Yeni bir değişken oluşturmak yada değerini değiştirmek için çoğu programlama dilinde genel olarak kullanılan şu söz dizimi kullanılır.

Sabit(Static) değişkenler: Değer atadığımız bazı değişkenlerin değerlerinin daha sonra değiştirilmemesini isteriz. Bazı programlama dilleri böyle bir kısıtlamaya izin verse de Python’da böyle bir şey yok. Bunun yerine genel olarak kabul görmüş bir isimlendirme yöntemi olan değişken ismini büyük harflerle yazma yöntemi ile değişkenimizin sabit kalması gerektiğini bildirebiliriz.

Yukarıdaki basit kod parçasında tanımladığımız değişkenlere erişimimiz şu an için her satırda var. Fakat bu durum kodumuza bazı fonksiyonlar eklediğimizde, içinde tanımlı değişkenler için böyle olmayacaktır.

Kapsama Alanı (Scope): Bir değişkenin ulaşılabilir olduğu alan için kullanılır.

Bir Python dosyasının ana kısmında tanımlanan değişkenlere global değişkenler denir ve bunlara bu dosya içerisinde ve bu dosyayı import eden diğer dosyalarda erişilebilir. Bir değişkenin bu kadar genel erişilebilirliğe sahip olması projemiz büyüdüğünde kontrolü zorlaştırabilir ve sorunlara sebep olabilir, OOP yani sınıf kullanımı bunun önüne geçmek için iyi bir  yöntemdir.

Bir fonksiyon içerisinde tanımlanan değişkenlere ise yerel(local) değişkenler denir ve tanımlandığı fonksiyon dışında erişilemez. Parametre olarak verdiğimiz değerlere de local değişken gibi davranılır.

Basit bir örnek;

Yukarıda gayet basit bir örnek ile kapsama alanını gördük ama her zaman bu kadar basit olmuyor durumlar. Örneğin fonksiyonumuz içerisinde, global olarak tanımlı bir değişken ile aynı isimli başka bir değişken tanımlarsak/değerini değiştirmek istersek ve kapsama alanı etkisini tam anlamamışsak, kodumuz beklendiği gibi çalışmayabilir.

Burada fonksiyonumuz global alandaki adet değişkeninin değerini değiştirmek yerine local alanda yeni bir adet değişkeni oluşturur. Bu yüzden global alanda adet değişkenine eriştiğimizde hala 5 değerini görürüz.

Kodumuzun istendiği gibi çalışması için global anahtar kelimesini kullanmamız gereklidir. Global anahtar kelimesinin kullanımı kodunuzun yönetilmesini zorlaştıracağı için tavsiye edilmez.

Sınıflar içerisinde tanımlanan değişkenler de yine local değişkenlerdir ve kapsama alanı tanımlandığı sınıf ile sınırlıdır. Fakat sınıfın değerlerine ulaşmak için kullanılan “.” operatörü ile bu değişkene, oluşturulmuş bir sınıf örneği(instance) üzerinden erişilebilir.

“Python’da Değişkenler ve Kapsama Alanı (Scope)” için bir yorum

  1. Bu blogu bu kadar gec kesfetmis olmam uzucu 🙂 Elinize saglik bir garip scope olayini da paylasayim.

    try:
    test = ‘Garip bir sey’
    except:
    test = ‘Hatali’

    print(test)

    Bu kodu compiled dillerde ‘test’ does not exist in the current context gibi bir hata dondurur. Buradaki olay ise tamamen garip sekilde calisiyor.

    Ayni sekilde su kod da tanimsiz olsa bile calisiyor:

    if 2 > 1:
    mesaj = ‘Yeni Yazi’

    print(mesaj)

    Sanirim scope olayi sadece metod isimlerinde falan duzgun calisiyor.

    if ve try kendi icinde yeni bir scope olusturmuyor yani.

Ali için bir cevap yazın Cevabı iptal et