Python Değişkenleri (Variables)

Bu derste, Python dilinde değişkenleri nasıl tanımladığımızı, nasıl değer atadığımız ve temel işlemleri nasıl gerçekleştirdiğimizi anlatacağız.

Python Değişkenleri

Değişken” (variable), adından da anlaşılacağı üzere değişebilen değerleri temsil eder. Bu kavramın kökeni de matematikten gelmektedir. Zira matematikte bir değişken, genellikle henüz bilinmeyen veya değişebilir bir değeri ifade eden bir semboldür. Programlamaya geldiğimizde, bu kavram biraz daha genişler. Programlama dilinde değişkenler, hafızada belirli bir bilgi veya değeri saklamak için kullanılır. Bu saklanan değer, programın farklı aşamalarında güncellenebilir, değiştirilebilir ya da yeniden tanımlanabilir.

Gelelim Python’da nasıl kullanıldığına. Python’da değişken kullanımı son derece basittir. Bir değişken oluşturmak için bir isim ve bir değer ataması yaparız. Bu atamada = işareti, atama operatörü olarak kullanılır.

isim = "Ahmet" şeklinde bir kod yazdığımızda, “Ahmet” değerini “isim” adındaki değişkene atamış oluruz. Bu, isim değişkeninin artık “Ahmet” değerini taşıdığı anlamına gelir.

Aynı şekilde, sayısal değerler veya diğer veri tipleri için de benzer bir atama yapabiliriz. Örneğin, yas = 25 dediğimizde, bu “yas” değişkenine 25 değerini atanır.

Değişkenlerin değerleri sonrasında da değiştirilebilir. Eğer yas değişkeninin değerini 26 yapmak isterseniz, yine aynı atama operatörünü kullanarak yas = 26 şeklinde bir kod yazabiliriz. Bu durumda “yas” değişkeninin yeni değeri 26 olur.

Fark ettiyseniz, birinde metinsel veri tipi kullandık. Buna karşılık diğerinde ise sayısal veri tipi kullandık. Bunu yapabilmemizin sebebi Python’un dinamik tip belirleme yaklaşımının bir sonucudur. Yani, değişkenlere değer atandığında, türlerini belirtmek zorunda değilsiniz.

Değişkene bir değer atandığı anda, otomatik olarak türü de belirlenir. Hatta bu değer bir başka veri tipine dönüştürülse bile hata vermez. Böylece, bazı dillerde karşılaşabileceğimiz tür uyumsuzluğu hataları Python’da görülmez.

x = 10       # x şu anda bir tam sayıdır
print(x)     # 10 çıktısını verir
x = "merhaba" # x şu anda bir metindir
print(x)     # "merhaba" çıktısını verir

Yukarıdaki kodda, x adında bir değişken önce bir tam sayıya atanıyor, ardından bu değer bir metinle değiştiriliyor. Bu kodda herhangi bir hata almadan değişkenin türünü dinamik olarak değiştirmiş olduk. Bu, Python’un dinamik tiplendirmesinin bir özelliğidir ve bu sayede kod yazarken daha esnek olabilirsiniz. Ancak bu esneklik, bazen beklenmedik sonuçlara yol açabilir, bu yüzden değişkenlerin türlerini ve değerlerini iyi takip etmek önemlidir.

Python’da değişken tanımlarken tip belirtmek zorunlu değildir. Ancak bazen kodun okunabilirliği için ya da belli bir standartta yazmak için değişkenin tipini belirtmek isteyebiliriz. Bakınız:

degisken: int = 10

Bu tanımlamada, degisken isimli bir değişkene tam sayı bir değer atanırken, int kullanarak bu değişkenin bir tam sayı tipinde olduğunu belirtiyoruz. Bu sadece bir ipucudur ve değişkenin gerçek tipini değiştirmez; yani daha sonra bu değişkenin değerini bir string veya başka bir tipte bir değerle güncelleyebiliriz. Bakınız:

degisken: int = 10  # 'degisken' adında bir değişkene tip ipucu ile birlikte 10 değeri atandı.
print(degisken)  # 10 çıktısını alırız

degisken: str = "on"  # Aynı değişken için farklı bir tip ipucu ve metin değeri atanıyor.
print(degisken)  # "on" çıktısını alırız

Bu örnekte ilk olarak degisken adında bir değişkene tam sayı tipinde olduğu ipucu ile birlikte 10 değeri atandı. Ancak sonrasında aynı değişkene metin tipinde “on” değeri atandı.

Python’da Değişkenleri Nasıl Adlandırmalıyız?

Python’da değişken adlandırması yaparken dikkat etmemiz gereken birtakım kurallar bulunmaktadır:

  1. Harf veya Alt Çizgi İle Başlama: Değişkenler bir harf veya alt çizgi ile başlamalıdır. Bu, Python’un değişkenin nerede başladığını ve nerede bittiğini kolayca ayırt edebilmesini sağlar. Örneğin: degisken veya _degisken doğru kullanımlardır, fakat 1degisken yanlış bir kullanımdır.
  2. Özel Karakter veya Boşluk İçermeme: Değişken adlarında özel karakterler veya boşluklar kullanılmamalıdır. Bu tür karakterler kodun karmaşık hale gelmesine ve yanıltıcı olmasına neden olabilir. Örneğin: degisken_adi doğru bir kullanımdır, ancak degisken adı veya degisken$adi yanlış kullanımlardır.
  3. Büyük/Küçük Harfe Duyarlılık: Python, büyük-küçük harfe duyarlı bir dildir. Bu nedenle, degisken ve Degisken iki farklı değişken olarak kabul edilir. Haliyle, değişken adlandırırken dikkatli olmalısınız.
  4. Tek Harfli Değişken Adları: Genellikle döngülerde kullanılır. Örneğin: i, j gibi. Ancak bu adların kodun genel anlamını bozmaması önemlidir. Ayrıca bu adların fonksiyon ya da metot içinde yerel olarak kullanılması tercih edilir.
  5. Küçük Harf ve Alt Çizgi: Değişken adlarında genellikle küçük harf kullanılır. Eğer değişken adı birden fazla kelime içeriyorsa, bu kelimeleri ayırmak için alt çizgi (_) kullanılır. Örneğin: maksimum_deger, ortalama_hiz gibi.
  6. Karakter Uyumluluğu: Modern Python sürümleri (Python 3 ve üzeri) Türkçe karakterleri değişken adlarında sorunsuzca destekler. Yani şehir, ülke, yaşınız gibi değişken adları kullanabilirsiniz.
  7. Kodun Evrenselliği: Eğer yazdığınız kodu uluslararası bir kitleyle paylaşmayı düşünüyorsanız İngilizce değişken adları kullanmanız kod okunurluğunu arttıracaktır.
  8. Python’da, “and,” “if,” “else,” “while,” “for” gibi bazı anahtar kelimeler, dilin temel yapı taşlarıdır ve programın kontrol akışını, veri yapısını ve diğer önemli işlevleri yönlendirmek için kullanılır. Bu nedenle, tabiri caizse “yasaklı kelime” olarak da adlandırılan bu anahtar kelimeleri değişken adları olarak kullanmamamız gerekmektedir.

Çoklu Kelime Değişken Adları

Değişken atamaları birden fazla kelime içerecek şekilde de yapılabilir. Ancak böylesi durumlarda değişkenin okunması zor olabileceğinden daha okunaklı hale getirmek adına bazı tekniklerden yararlanılır:

  1. Snake Case (Yılan Yazımı): Bu, Python’da değişken adlandırmak için en yaygın yöntemdir. Tüm karakterler küçük harfle yazılır ve kelimeler arasına alt çizgi (_) eklenir.
    • Örnek: degisken_adi, kullanici_sayisi
  2. Camel Case (Deve Yazımı): İlk kelime küçük harfle başlar, sonraki her kelimenin ilk harfi büyük harfle yazılır. Bu yöntem genellikle Python’da tercih edilmez, ancak bazı diğer programlama dillerinde yaygındır.
    • Örnek: degiskenAdi, kullaniciSayisi
  3. Pascal Case (Paskal Yazımı): Her kelimenin ilk harfi büyük harfle yazılır. Python’da genellikle sınıf adlandırmalarında kullanılır.
    • Örnek: DegiskenAdi, KullaniciSayisi

Python’da Çoklu Değişken Atama

  • Birkaç basit değişkene değer atamak için, değişkenler arasında virgül kullanarak değerleri atayabilirsiniz. Örneğin, a, b, c = 5, 3.2, "Merhaba" ifadesi ile a‘ya 5, b‘ye 3.2 ve c‘ye “Merhaba” değerleri atanmış olur.
  • Liste Üzerinden Atama: Listeleri kullanarak da çoklu atama yapabiliriz. Örneğin, my_list = [1, 2, 3] şeklinde bir listemiz varsa, x, y, z = my_list ile x, y ve z değişkenlerine sırasıyla 1, 2 ve 3 değerlerini atayabiliriz.
  • Tuple Üzerinden Atama: Aynı şekilde tuple’lar için de bu yöntemi kullanabiliriz. Eğer my_tuple = (4, 5, 6) şeklinde bir tuple’ımız varsa, p, q, r = my_tuple ile bu değerleri sırasıyla değişkenlere atayabiliriz.

Tabii bu üç yöntem için de değişken sayısının değer sayısıyla eşleşmesi gerektiğini belirtek isterim. Aksi takdirde ValueError: not enough values to unpack hatasını alırsınız.

  • Yıldızlı Atama: Python 3.8 ve sonraki sürümlerinde, yıldızlı ifade (*) kullanarak değişkenler arasında kalan tüm değerleri bir listeye atayabiliriz. Örneğin, x, *y, z = [10, 20, 30, 40, 50] ifadesinde, x‘e 10, z‘ye 50 atanırken, y bir liste olur ve [20, 30, 40] değerlerini içerir.

Python’da Evrensel Değişkenler (Global Variables)

Python’da evrensel değişkenler (global variables), programın herhangi bir yerinden erişilebilen ve kullanılabilen değişkenlerdir. Bu değişkenler genellikle programın en üst düzeyinde, yani herhangi bir fonksiyonun veya sınıfın içinde değil, doğrudan Python dosyasının en üstünde tanımlanır. Haliyle herhangi bir fonksiyon veya sınıf içinde kullanılmadan önce tanımlanmış olmaları gerekir.

Evrensel değişkenler, programın herhangi bir yerinde erişilebilir ve değerleri değiştirilebilir. Bu, programın farklı bölümleri arasında veri paylaşımı sağlamak veya belirli bir değeri geniş bir kapsamda kullanmak için kullanışlı olabilir. Ancak programın karmaşıklığını artırabilir, güvenlik zaifiyeti verebilir ve hata ayıklamayı zorlaştırabilir. Örneğin:

global_degisken = 10  # Python dosyasının en üst düzeyinde tanımlanan evrensel bir değişken

def fonksiyon():
    lokal_degisken = 5  # Sadece fonksiyon içinde tanımlanan yerel bir değişken
    print(global_degisken)  # Evrensel değişkene erişebiliriz

fonksiyon()
print(global_degisken)  # Programın herhangi bir yerinde evrensel değişkene erişebiliriz

Eğer bir fonksiyon içinde aynı isimde bir değişken oluşturulursa, bu değişken yerel değişken (local variable) olarak adlandırılır ve sadece fonksiyon içinde kullanılabilir. Ayrıca aynı değişken ismi hem evrensel hem de yerel olarak tanımlanabilmektedir. Ancak lokaldeki globali ezer.

x = 10  # Global değişken
y = 20  # Global değişken

def fonksiyon():
    x = 5  # Yerel değişken, evrensel olanı geçersiz kılar
    print("x:", x)  # Yerel x değişkeni kullanılır
    print("y:", y)  # Global y değişkeni kullanılır

fonksiyon()  # Çıktı: x: 5, y: 20
print("x:", x)  # Global x değişkeni kullanılır, Çıktı: x: 10

Bu örnekte, fonksiyon içinde x adında bir yerel değişken tanımlanmıştır ve bu yerel değişken, global x değişkenini gölgelemiştir. Dolayısıyla fonksiyon içinde x için yerel değişken kullanılırken, y için global y değişkeni kullanılır. Fonksiyon dışında ise global x değişkeni kullanıldığında değeri 10’dur. Kodu çalıştırmak için: Trinket

Python’da fonksiyon içinde bir değişken oluşturulduğunda, bu değişken yerel (local) bir değişken olur ve sadece o fonksiyonun içinde erişilebilir. Ancak, eğer bir fonksiyon içinde bir değişken oluşturulurken bu değişkenin global (evrensel) bir değişken olmasını istiyorsak, global anahtar kelimesini kullanabiliriz. Bu sayede değişken global kapsamda tanımlanır ve fonksiyon dışında da erişilebilir hale gelir.

x = 10  # Global değişken

def fonksiyon():
    global y  # y değişkenini global olarak tanımlıyoruz
    y = 5  # Artık y global bir değişken oluyor
    print("Yerel x:", x)  # Global x değişkenini kullanır
    print("Global y:", y)  # Global y değişkenini kullanır

fonksiyon()  # Çıktı: Yerel x: 10, Global y: 5
print("Global x:", x)  # Global x değişkenini kullanır, Çıktı: Global x: 10
print("Global y:", y)  # Global y değişkenini kullanır, Çıktı: Global y: 5

Bu örnekte, fonksiyon içinde y değişkeni global anahtar kelimesi ile tanımlanmıştır. Bu nedenle, y artık global bir değişken olur ve fonksiyon dışında da erişilebilir hale gelir. x ise global bir değişken olarak tanımlandığı için fonksiyon içinde ve dışında kullanılabilir.

Bir fonksiyon içinde tanımlanan bir evrensel (global) değişkenin değerini değiştirmek için yine global anahtar kelimesi kullanılır. Zira global anahtar kelimesi, Python’a bu değişkenin evrensel kapsamdaki olduğunu bildirir ve değişkenin değerini bu kapsamda güncellememize olanak tanır. Örneğin:

x = 10  # Global değişken

def degiskeni_degistir():
    global x  # x değişkenini global olarak tanımlıyoruz
    x = 5  # x'in global değerini 5 yapar

degiskeni_degistir()  # x'in global değerini 5 yapar
print(x)  # Çıktı: 5

Bu örnekte, degiskeni_degistir fonksiyonu içinde global anahtar kelimesi kullanılarak x değişkeni global olarak tanımlanır ve fonksiyon içindeki atama işlemi global x değişkeninin değerini 5 yapar. Sonuç olarak, x değişkeninin değeri fonksiyon çağrısından sonra 5 olarak güncellenir.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu