17 Ağustos 2014 Pazar

Python' da Fonksiyonlar

Merhabalar


Yine bir pazar günü daha buradayım ve size en önemli konulardan birini anlatmayı düşünüyorum. Python ile ilgili anlatacak bir çok yer var fakat içinden kendimce önemli olanları anlattığım için Python yazılarımın sonlarına yaklaşıyoruz. Fonksiyonlar oldukça önemli bir konu. Yapacağınız işlemlerde bir çok kolaylık sağlar size. Öncelikle bir kere yazarsınız ve her zaman kullanırsınız =). Kulağa çok mantıklı geldiğini biliyorum =). Lise zamanımda fonksiyonları çok sevmemiştim ama çok basit olduğunu anlayınca neden ben bu konuyu sevmemişim dedim =). Bu gün burada size anlatacağım fonksiyonlar konusunun aslında lisedeki fonksiyonlardan fazla bir farkı yok. Eğer fonksiyona yapacağı işlemi bir kez anlatırsanız o sizin istediğiniz her sayı için o işlemi yapabilir. Şimdi şöyle bir örnek ile açıklayalım.

f(x) = 5x+ 5x + 3 
f(3) = ?
Normalde bunu el ile çözmek oldukça kolay olabilirdi. Aslında şu an el ile çözmek çok mantıklı. Peki ya oldukça karmaşık bir fonksiyon olsaydı o  zaman bunu bilgisayara çözdürmek sizce de el ile çözmekten daha kolay olmaz mıydı? O zaman su basit fonksiyonu öncelikle bilgisayarda çözmeye çalışalım.
def f(x):
    islem = (x ** 2)*5 + (5 * x) + 3
    return islem
print f(3)
Bu kodu yazdığımızda şöyle bir çıktı veriyor:
>>> 
63
Bir fonksiyon oluşturduk ve bu fonksiyon bu işi bizim yerimize yapıyor. Ve artık istediğimiz sayı için bu fonksiyonu çalıştırabiliriz. Peki bu kod içinde yazanlar ne anlama geliyor?
def f(x):
Bir fonksiyon tanımlayabilmek için kesinlikle başında def kalıbını kullanmalıyız ki Python bunun bir fonksiyon olduğunu anlasın. f olarak yazdığım kısım fonksiyonun adı. Oraya istediğiniz harfi yada kelimeyi yazabilirsiniz fakat yazarken dikkat edin artık o fonksiyonun adı hep o olacak. Bu yüzden fonksiyonun adını verirken özenle seçmenizi tavsiye ederim. Özellikle fonksiyonun ne yaptığıyla alakalı bir isim koymanız işinizi ileride kolaylaştıracaktır. Bu tamamen sizin yaratıcılığınıza kalmış. Fonksiyonumuzun adını verdikten sonra parantez içinde değişkeninizi belirtmeniz ve parantezden sonra ":" gerekir. Değişken sayınız 1 yada daha fazla olabilir.
islem = (x ** 2)*5 + (5 * x) + 3
Burada yapacağı işlemi belirttik ve sonucu da islem adında bir değişkene atadık. Yukarısı iki nokta ile bittiği için bu satıra bir Tab boşluğu içeriden başladık.
return islem
return komutu print komutuna benzer farkı ise return yaptığımızda fonksiyon dışında return yaptığımız şeyi kullanabiliriz fakat print yaparsak bunu dışarıda kullanamayız. Örneğin return islem yaptığımızda 63 sonucunu dışarıda kullanabiliriz. Başka bir fonksiyona input olarak katabiliriz fakat print yaparsak bu mumkün değil.
print f(3)
Fonksiyonumuzun son parçası bu kısımdır. print komutunun aslında burada kullanılmasına gerek yok. Ben bunu kullanırken sadece sonucu görebilmek adına yaptım. Print yazmayınca fonksiyon çalışır fakat 63 sonucunu göremezsiniz. Yazdığınız uzun kodların içerisinde fonksiyonun çalışıp çalışmadığını bu şekilde kontrol edebilirsiniz. f(3) kısmına gelince fonksiyonun önemli kısımlarından biri de burasıdır. Fonksiyonu doğru bir şekilde yazabilirsiniz ama çağırmazsanız çalışmaz. Fonksiyonu çağırmak için ilk önce fonksiyonun adını yazmalısınız ve parantez içinde ne için bu işlemi yapmasını istediğinizi yazmalısınız. Biz burada f fonksiyonunu 3 için çalıştırdık. Eğer iki değişken var ise buraya iki değişken için değer girmelisiniz.




Fonksiyonların genel mantığından bu şekilde bahsettikten sonra ana parçalarımızı kısa bir şekilde özetleyelim;
  • def komutu fonksiyonun adı ve değişken belirleme.
  • Değişkene hangi işlemler yapılacağını belirten kısım.
  • Sonucu return etme
  • Fonksiyonu çağırmak.
Gömülü Fonksiyonlar

Python’da en büyük nimetlerden biri de bu dilin yapısında bulunan “gömülü fonksiyonlar”dır. Peki, bir fonksiyonun “gömülü” olması ne anlama gelir? “gömülü” demek, “Python’un içinde yer alan” demektir. Yani gömülü fonksiyonlar, Python programlama dilininiçinde yer alan, hazır fonksiyonlardır. Mesela daha önce öğrendiğimiz ve sık sık kullandığımız range() fonksiyonu gömülü bir fonksiyondur. Bu fonksiyon Python’un içinde, kullanılmaya hazır bir şekilde bekler. Bu fonksiyonun işlevini yerine getirebilmesi için tanımlanmasına gerek yoktur. Python geli¸stiricileri bu fonksiyonu tanımlamış ve dilin içine “gömmüşlerdir”. Mesela len() ve sum() fonksiyonları da birer gömülü fonksiyondur.

Python’daki gömülü fonksiyonların listesine buradan erişebilirsiniz. Bir program yazarken, özel bir işlevi yerine getirmeniz gerektiğinde yukarıdaki adresi mutlaka kontrol edin. Bakın bakalım sizden önce birisi tekerleği zaten icat etmiş mi? Örneğin tamsayıları (integer) ikili sayılara (binary) çevirmeniz gerekiyorsa, oturup bu işlemi yapan bir fonksiyon tanımlamaya çalışmanız boş bir çaba olur. Bunun yerine halihazırda tanımlanıp dilin içine gömülmüş olan bin() fonksiyonunu kullanabilirsiniz. Yukarıdaki adreste bunun gibi onlarca gömülü fonksiyon göreceksiniz.

Bir sonraki yazımda bu konu ile ilgili bilgilere devam edeceğim.

Şuan bir fonksiyon nasıl yazılır artık biliyoruz ve eminim daha önce yazdığımız kodları artık fonksiyon haline getirebilirsiniz. Bence 1- 2 saat içerisinde yapabilirsiniz.

Son olarak fonksiyon kullanarak bir örnek yapıp bu haftayı bitirmek istiyorum.
def sonuc_gonder(kime, tarih, puan):
    print """
    Sayin %s,
    %s tarihinde girdiginiz sinav sonucunda %s puan aldiginizi bildirmek isteriz. """ %(kime, tarih, puan)
sonuc_gonder("Mehmet Bey""19.12.2009""75")
Bu kodu yazdığımızda şöyle bir çıktı veriyor:
>>>
Sayin Mehmet Bey,
    19.12.2009 tarihinde girdiginiz sinav sonucunda 75 puan aldiginizi bildirmek isteriz. 
Bu haftalık anlatacaklarım bu kadar sizler yeni fonksiyonlar belirleyebilir ve onları yazmaya çalışabilirsiniz. Codecademy.com'a hala bakmamışsanız bakmanızı ve alıştırmaları yapmanızı şiddetle tavsiye ederim.

Bilgi paylaştıkça güzelleşir. Paylaşarak öğrenmek dileğiyle.

Osman

Hiç yorum yok:

Yorum Gönder