Değişkenler

Değişkenler bize, bir kod sayfasında oldukça esneklik sağlayan yapılardır. Ancak değişkenler deyince gözünüz korkmasın. Matematikte 'x = 5' ifadesine benzer birçok ifade görmüşsünüzdür. İşte, buradaki değişken mantığı da aynıdır. Bu örnekte 'x' bir değişkendir ve '5', 'x' değişkeninin değeridir. Bir de; isminden de anlayacağınız üzere bu yapılar değişkendir. Yani örneğin x'in değeri 30 da, 19 da olabilir. Buradaki 'x', değeri değişebilen bir değişken konumundadır.

Değişkenin ne olduğunu kabaca aldıktan sonra Python'da bir değişkenin nasıl tanımlandığına bakalım.

Yukarıda da gördüğünüz üzere ilk önce değişkenin adını belirliyoruz. Değişken ismini takip eden bir eşittir (=) ve bu değişkenin değerini ifade ediyoruz.

Bu noktada 'name' isimli değişkenimizin değeri 'Cyber Worm' olarak geçerken 'x' isimli değişkenin değeri de 22'dir.

Şimdi biz, bu değişkenleri tanımladık. Peki, bunlar ne işimize yarayacak? Bir araç kodladığınızı ve kullanıcıya, hata yapması durumunda bu aracın nasıl çalıştırılması gerektiğini gösteren bir kullanım talimatı vermek istediğinizi varsayalım. Bunun için aşağıdaki iki yöntemden hangisini tercih ederdiniz?

Yukarıdaki iki yöntemden biri, 'kullanım talimatı' metninin hepsini saklarken (usage) diğeri sadece tek seferliğine (print) bunu yazdırıyor. Bu noktada kullanıcının birden fazla farklı hata yaptığını düşünürsek bu kullanım talimatını her seferinde print ile mi vereceğiz? Oldukça saçma ve gereksiz bir kullanım olacağını, kod sayfasında kalabalık yaratacağını anlamışsınızdır. Peki, madem değişken daha iyi, o zaman bunu nasıl yazdıracağız?

İşte yukarıdaki gibi çalıştırıyoruz. Bir değişkenin değerini ekrana vermek için yapmanız gereken şey, print fonksiyonu içerisine "tırnak işaretleri olmadan" bu değişkenin adını vermektir. Bunu yaptığınızda kodunuz çalışacaktır.

Bu noktada dikkatinizi bir noktaya çekmek istiyorum. Bu kod sayfasında kullanıcı her hata yaptığında bu kullanım talimatını ekrana yazdırmak istediğimizde bunu sadece 'print(usage)' olarak yazmak çok daha kolay, rahat olacak ve okunabilir bir kod sağlayacaktır. Yani bu değişkeni istediğiniz yerde, istediğiniz zaman çağırabilirsiniz. Örnek verelim mi?

Bakın, değişkeni 3 defa çağırdım ve değişkenin tuttuğu değer ekrana 3 defa yazdırıldı. İşte, değişkenlerin sağladığı kolaylıklar, güzellikler bu şekilde. Tam olarak bu noktada önemli bir olaya değinmem lazım.

10000 satırlık bir kod sayfanız olduğunu varsayın. Kullanıcının, yazılımınızı kullanırken birden fazla yerde hata yapma olasılığı olduğunu düşünün. Böyle bir durumda kullanıcı her hata yaptığında onu uyarmanız gerekiyor ancak bunu sadece print ile yapıyorsunuz. Yöneticiniz veya takım şefiniz, bu kullanım talimatını değiştirmeniz için size ufak bir metin veriyor ve bunu, koddaki uyarıların yerine koymanızı istiyor. 10000 satırlık kod içerisinde uyarıyı yazdığınız her satıra gidip bunu yazmak mı daha mantıklı olur yoksa sadece değişkenin tuttuğu değeri yazdırmak mı daha mantıklı olur?

Elbette bu durumda sadece değişkenin değerini değiştirmeniz yeterli olacaktır. Böylece 'print(usage)' komutunun verildiği her yer değişecektir. Ancak tabii ki yukarıdaki gibi başka değişken tanımlamak yerine direkt olarak tanımlı olanı değiştirmeniz lazım; ben sadece değerin değiştiğini göstermek için öyle yaptım.

Değişkenlerin önemini anladığımıza ve bunların nasıl tanımlanıp çağırıldığını gördüğümüze göre bir değişkenin hangi kurallara göre tanımlanması gerektiğine de bakalım.

Madde 1: Değişken isimleri anlamlı olmalıdır. Bu, şimdilik sizin için pek bir anlam ifade etmiyor olabilir ancak iş hayatına girdiğinizde kodunuzu başkası okuduğunda ne yazdığınızı anlamalı. Örneğin 'name' yazmak yerine 'n' yazarsanız başka biri bunu anlamakta zorluk çekecektir. Hatta birkaç ay sonra kendi kodunuzu açtığınızda siz bile ne yazdığınızı anlamayabilirsiniz. Bu konuyla alakalı başka bir örnek daha verelim. Örneğin birinin doğum gününü tutmak istiyorsunuz ancak siz bunu 'birthday' olarak değil de 'b' olarak tanımlarsanız burada bir sorun vardır.

Bu arada 'n' veya 'b' olarak değişken tanımlamak teknik olarak yanlış değildir. Yani kodunuz yine de çalışacaktır ancak okunabilir kod olması açısından değişkenlere anlamlı isimler vermek önemlidir.

Madde 2: Değişkenlerde Türkçe karakterlerden kaçınmamız gerekir. 'yaşgünü' veya 'şarkıadı' gibi tanımlamaları önermiyorum. Bazı sistemlerde bunlar direkt olarak hataya sebep olacaktır ancak bazı sistemlerde bunu bu şekilde tanımlayabiliyoruz. Bu durumda yine okunabilir kod açısından Türkçe karakter kullanmamaya hatta mümkünse İngilizce kelimeler kullanmaya özen göstermemiz lazım.

Madde 3: Birden fazla kelimeden oluşan değişkenlerin ilk kelimesinin ilk harfi küçük olmak üzere diğer kelimelerin ilk harfi büyük olmalıdır. Alternatif olarak aralarına alt tire koyabilirsiniz. Aşağıdaki görselde bulunanların hepsi mümkündür.

Madde 4: Bir değişken sayı ile başlayamaz. Ancak değişkenin devamında sayı kullanılabilir. Aşağıda gördüğünüz gibi sayıyı başa koyduğumuzda direkt olarak hata aldık.

Madde 5: Bir değişken içerisinde alt tire haricinde herhangi bir noktalama işareti/sembol kullanılamaz. Aşağıdaki görselde ilk üç tanımlama yanlış, son iki tanımlama ise doğrudur.

Değişkenleri ekrana yazdırırken print(name) şeklinde yazdırıyorduk ve sonuç, name değişkeninin tuttuğu değer oluyordu. Peki, bu çıktıları daha güzel bir hâle getirebilir miyiz?

Bunu daha güzel kılmak için belirteçleri ('Adım:' gibi) tırnak içerisine aldıktan sonra yanına gelmesini istediğimiz değişkeni virgülden sonra yazıyoruz. Bu ikisini birbirinden virgül ile ayırmak oldukça önemlidir.

Bu virgüller yerine '+' ifadesini de koyabilirsiniz ancak çıktı istediğiniz gibi gelmeyebilir.

Bunlar güzel ancak bunu daha güzel kılabiliyoruz. Bunu öğrenmek için bir sonraki bloga gidebilirsiniz.

Peki, madem bir şeyleri print() etmeyi ve değişkenleri öğrendik; o zaman iki yeni şey öğrenelim. Bu iki şey sayesinde çıktılarınız hem daha güzel görünecek hem de daha az zahmetle işinizi halledebilir duruma geleceksiniz. Bunlar; f-string ve .format() yapılarıdır. Başlayalım.

f-string

Bir önceki blogda print() fonksiyonunun daha efektif bir şekilde kullanılabiliyor olduğunu gördük. Bu fonksiyon ile string'leri ve değişkenleri aynı yerde yazabiliyor, böylece çıktımız daha düzgün bir hâl alıyordu. Örneğin;

print("Adım", name, "Soyadım:", surname)

Ben bunu genellikle kullanmam. Bunun yerine 'f-string' dediğimiz bir yapıyı tercih ederim. Buradaki 'f', 'format' anlamına gelir. Format yapısını kullandığımızda tek bir "tırnak işareti arasındaki metin" içerisinde değişken de kullanabiliyor hatta çeşitli özel karakterlerle bunu süsleyebiliyoruz. O özel karakterlere şu an için girmeyeceğim.

Syntax yapısına dikkatli bakın. print(f"") olarak başlıyor ve yazacaklarımızı o iki tırnak içerisine yazıyoruz. Yazdıklarımız arasına bir değişken koymak istediğimiz zaman ise bu değişkeni süslü parantez içerisine yazıyoruz. f-string sayesinde hem daha basit ve okunabilir hem de daha efektif bir kod yazmış oluyoruz.

Burada, değişkenlerin formatı değiştirilerek birer string gibi görülmeleri sağlanıyor. string gibi göründükleri için de halihazırda string olan ifadenin içerisinde yabancılık çekmiyorlar. Dikkat edilmesi gereken özellik; ifadenin başına 'f' harfi getirmek ve değişkeni süslü parantez içine yazmaktır.

Bununla birlikte başka işlemler de yapabilirsiniz:

Gördüğünüz üzere en başa f"" ifadesini koyduktan sonra içerisine süslü parantezler içinde olmak kaydıyla önce num1 değerini, sonra num2 değerini ve en sonunda bu ikisinin toplamını koydum. Bu şekilde işlemler de yapabilirsiniz. Seri boyunca bu yapıları kullanacağım için buna aşina olmanız gerekmektedir.

format()

Bu fonksiyon da f-string gibi ekrana vereceğimiz yazıları formatlamamıza olanak tanıyor ve bu yapılarda da süslü parantez kullanıyoruz. Ancak, burada durum biraz farklı. Önce kullanımını görelim, ondan sonra sırasıyla açıklayalım.

İlk adımımız print("") şeklinde olmalıdır. Ancak, burada 'f' harfini kullanmıyoruz. Değişkenlerin gelmesi gereken kısımlara bir adet süslü parantez açıp kapatıyoruz. Sonrasında parantezlerin içerisinde, tırnak işaretlerinin dışında olmak koşuluyla .format() diyoruz ve hangi süslü paranteze hangi değişkeni yerleştirmek istiyorsak onun ismini yazıyoruz. Birden fazla değişken varsa süslü parantezlerin sırasına göre değişkenleri sıralayıp onları bir virgül ile ayırıyoruz.

Başka bir örnek daha yapalım.

name ve interestedIn isimli iki değişkenim var. Bunları ekrana yazdırmak için iki tırnak işareti arasında süslü parantezlerimi yerleştiriyorum. Bundan sonra yapmam gereken şey, parantezlerin içinde ve tırnak işaretlerinin dışında olmak koşuluyla .format() demek ve gerekli değişkenleri sırasıyla yazmak. Yapalım.

Ok işaretlerinin renklerine dikkat ederseniz hangi değişkenin hangi süslü paranteze geldiğini görebilirsiniz. İşte, format() fonksiyonu da bu şekildeydi.


Yayınlanma Tarihi: 2022-10-21 21:38:12

Son Düzenleme Tarihi: 2023-02-04 20:15:48