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:
- 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, fakat1degisken
yanlış bir kullanımdır. - Ö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, ancakdegisken adı
veyadegisken$adi
yanlış kullanımlardır. - Büyük/Küçük Harfe Duyarlılık: Python, büyük-küçük harfe duyarlı bir dildir. Bu nedenle,
degisken
veDegisken
iki farklı değişken olarak kabul edilir. Haliyle, değişken adlandırırken dikkatli olmalısınız. - 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. - 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. - 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. - 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.
- 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:
- 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
- Örnek:
- 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
- Örnek:
- 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
- Örnek:
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 ilea
‘ya 5,b
‘ye 3.2 vec
‘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
ilex
,y
vez
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.