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.
sayi = 6 metin = "araba" # bir kaç değişkeni birden tanımlamak için şöyle kolay bir yazım da var isim, soyisim, yas = "Ahmet", "Yılmaz", 40
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;
a = 0 # Global değişken if a == 0: b = 1 # Global değişken def fonksiyon(c): d = 3 # Local değişken print(c) # c bir local değişkendir print(d) # hatasız bir şekilde 7 ve 3 basacaktır fonksiyon(7) # hatasız bir şekilde 0 ve 1 basacaktır print(a) print(b) # c ve d local değişkenler, buradan ulaşamayız # hata dönecektir print(c) print(d)
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.
adet = 5 def sifirla(): adet = 0 print(adet) sifirla() # 0 basacaktır print(adet) # 5 basacaktır
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.
adet = 5 def sifirla(): global adet adet = 0 print(adet) sifirla() # 0 basacaktır print(adet) # 5 basacaktır
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.
Bir cevap yazın