Pythonda fonksiyonları kullanabilmek için öncelikle fonksiyonları tanımlamamız gerekiyor. Fonksiyon tanımlamak için def adlı bir parçacıktan yararlanacağız. Pythonda fonksiyonları şöyle tanımlıyoruz:
Gördüğünüz gibi, önce def parçacığını, ardından da fonksiyonumuzun adını yazıyoruz. Fonksiyon adı olarak istediğiniz her şeyi yazabilirsiniz. Ancak fonksiyon adı belirlerken, fonksiyonun ne işe yaradığını anlatan kısa bir isim belirlemeniz hem sizin hem de kodlarınızı okuyan kişilerin işini bir hayli kolaylaştıracaktır. Yalnız fonksiyon adlarında Türkçe karakter kullanmamanız gerekiyor. Ayrıca fonksiyonları tanımlarken en sona parantez ve iki nokta üst üste işaretlerini de koymayı unutmuyoruz.
Böylece ilk fonksiyonumuzu tanımlamış olduk. Ama henüz işimiz bitmedi. Bu fonksiyonun bir işe yarayabilmesi için bunun altını doldurmamız gerekiyor. Fonksiyon tanımının iki nokta üst üste işareti ile bitmesinden, sonraki satırın girintili olması gerektiğini tahmin etmişsinizdir. Gelin isterseniz biz bu fonksiyonun altını çok basit bir şekilde dolduralım:
Böylece eksiksiz bir fonksiyon tanımlamış olduk. Burada dikkat etmemiz gereken en önemli şey, def fonksiyon_adi(): satırından sonra gelen kısmın girintili yazılmasıdır.
Şimdi isterseniz bu fonksiyonu nasıl kullanabileceğimizi görelim:
Bu kodları bir metin düzenleyiciye kaydedip çalıştırdığımızda hiç bir çıktı elde edemeyiz. Çünkü biz burada fonksiyonumuzu sadece tanımlamakla yetindik. Henüz bu fonksiyonun işletilmesini sağlayacak kodu yazmadık. Şimdi bu fonksiyonun hayat kazanmasını sağlayacak kodları girebiliriz:
Burada fonksiyonun çalışmasını sağlayan şey, en son satırdaki fonksiyon_adi() kodudur. Bu satırı ekleyerek, daha önce tanımladığımız fonksiyonu çağırmış oluyoruz. Bu satıra teknik olarak fonksiyon çağrısı (function call) adı verilir.
Yukarıdaki kodları çalıştırdığımızda ekrana merhaba dünya! satırının yazdırıldığını göreceğiz.
Tebrikler! Böylece ilk eksiksiz fonksiyonunuzu hem tanımlamış, hem de çağırmış oldunuz.
Dilerseniz, bu konunun en başında verdiğimiz dilekçe örneğini de bir fonksiyon haline getirelim:
Elbette bu örnek Pythondaki fonksiyonların bütün yeteneklerini ortaya koymaktan aciz. Üstelik bu fonksiyon, en başta bahsettiğimiz sorunları da çözemiyor henüz. Ama ne yapalım... Şu ana kadar öğrendiklerimiz ancak bu kadarını yapmamıza müsaade ediyor. Biraz sonra öğreneceklerimiz sayesinde fonksiyonlarla çok daha faydalı ve manalı işler yapabileceğiz.
Yeni bir bölüme geçmeden önce isterseniz fonksiyonlarla ilgili olarak buraya kadar öğrendiğimiz kısmı biraz irdeleyelim:
Pythonda fonksiyonlar bizi aynı şeyleri tekrar tekrar yazma zahmetinden kurtarır. Fonksiyonlar bir bakıma bir taslaklama sistemi gibidir. Biraz sonra vereceğimiz örneklerde bu durumu daha net olarak göreceğiz.
Pythonda fonksiyonları kullanabilmek için öncelikle fonksiyonu tanımlamamız gerekir. Bir fonksiyonu tanımlamak için def adlı parçacıktan yararlanıyoruz. Pythonda bir fonksiyon tanımı şöyle bir yapıya sahiptir:
Fonksiyon adlarını belirlerken Türkçe karakter kullanmıyoruz. Fonksiyonlarımıza vereceğimiz adların olabildiğince betimleyici olması herkesin hayrınadır.
Elbette bir fonksiyonun işlevli olabilmesi için sadece tanımlanması yetmez. Ayrıca tanımladığımız fonksiyonun bir de gövdesinin olması gerekir. Fonksiyon gövdesini girintili olarak yazıyoruz. Dolayısıyla Pythonda bir fonksiyon temel olarak iki kısımdan oluşur. İlk kısım fonksiyonun tanımlandığı başlık kısmı; ikinci kısım ise fonksiyonun içeriğini oluşturan gövde kısmıdır. Başlık ve gövde dışında kalan her şey fonksiyonun da dışındadır. Bir fonksiyon, gövdedeki girintili kısmın bittiği yerde biter. Örneğin şu bir fonksiyondur:
Bu fonksiyon def selamla(): satırıyla başlar, print nasılsın? satırıyla biter.
Fonksiyonların işlevli olabilmesi için bu fonksiyonlar tanımlandıktan sonra çağrılmalıdır. Örneğin yukarıdaki fonksiyonu şöyle çağırıyoruz:
Dediğimiz gibi, bu fonksiyon, def selamla(): satırıyla başlar, print nasılsın? satırıyla biter. Fonksiyon çağrısı dediğimiz selamla() satırı bu fonksiyonun dışındadır. Çünkü bu satır selamla() fonksiyonunun gövdesini oluşturan girintili kısmın dışında yer alıyor.
Eğer bu söylediklerimiz size biraz kafa karıştırıcı gelmişse, hiç endişe etmenize gerek yok. Tam olarak ne demek istediğimizi biraz sonra gayet net bir şekilde anlamanızı sağlayacak örnekler vereceğiz.
Dilerseniz bu bölümü kapatmadan önce fonksiyonlarla ilgili birkaç basit bir örnek daha yaparak bu konuya ısınmanızı sağlayalım:
Burada tek() ve cift() adlı iki fonksiyon tanımladık. tek() adlı fonksiyonun görevi ekrana Girdiğiniz sayı bir tek sayıdır! çıktısı vermek. cift() adlı fonksiyonun görevi ise ekrana Girdiğiniz sayı bir çift sayıdır! çıktısı vermek.
Daha sonra Pythonun raw_input() fonksiyonunu kullanarak kullanıcıdan bir sayı girmesini istiyoruz. Ardından da kullanıcı tarafından girilen bu sayının tek mi yoksa çift mi olduğunu denetliyoruz. Eğer sayı 2ye tam olarak bölünüyorsa çifttir. Aksi halde bu sayı tektir.
Burada cift() ve tek() adlı fonksiyonları nasıl çağırdığımıza dikkat edin. Eğer kullanıcının girdiği sayı 2ye tam olarak bölünüyorsa, yani bu sayı çiftse, daha önce tanımladığımız cift() adlı fonksiyon devreye girecektir. Yok, eğer kullanıcının verdiği sayı 2ye tam olarak bölünmüyorsa o zaman da tek() adlı fonksiyon devreye girer...
Bu kodlarda özellikle fonksiyonların nerede başlayıp nerede bittiğine dikkat edin. Daha önce de dediğimiz gibi, bir fonksiyon def parçacığıyla başlar, gövdesindeki girintili alanın sonuna kadar devam eder. Girintili alanın dışında kalan bütün kodlar o fonksiyonun dışındadır. Mesela yukarıdaki örnekte tek() ve cift() birbirinden bağımsız iki fonksiyondur. Bu fonksiyonlardan sonra gelen sayı değişkeni de fonksiyon alanının dışında yer alır.
Kod:
def fonksiyon_adi():
Gördüğünüz gibi, önce def parçacığını, ardından da fonksiyonumuzun adını yazıyoruz. Fonksiyon adı olarak istediğiniz her şeyi yazabilirsiniz. Ancak fonksiyon adı belirlerken, fonksiyonun ne işe yaradığını anlatan kısa bir isim belirlemeniz hem sizin hem de kodlarınızı okuyan kişilerin işini bir hayli kolaylaştıracaktır. Yalnız fonksiyon adlarında Türkçe karakter kullanmamanız gerekiyor. Ayrıca fonksiyonları tanımlarken en sona parantez ve iki nokta üst üste işaretlerini de koymayı unutmuyoruz.
Böylece ilk fonksiyonumuzu tanımlamış olduk. Ama henüz işimiz bitmedi. Bu fonksiyonun bir işe yarayabilmesi için bunun altını doldurmamız gerekiyor. Fonksiyon tanımının iki nokta üst üste işareti ile bitmesinden, sonraki satırın girintili olması gerektiğini tahmin etmişsinizdir. Gelin isterseniz biz bu fonksiyonun altını çok basit bir şekilde dolduralım:
Kod:
def fonksiyon_adi(): print "merhaba dünya!"
Böylece eksiksiz bir fonksiyon tanımlamış olduk. Burada dikkat etmemiz gereken en önemli şey, def fonksiyon_adi(): satırından sonra gelen kısmın girintili yazılmasıdır.
Şimdi isterseniz bu fonksiyonu nasıl kullanabileceğimizi görelim:
Kod:
# -*- coding: utf-8 -*- def fonksiyon_adi(): print "merhaba dünya!"
Bu kodları bir metin düzenleyiciye kaydedip çalıştırdığımızda hiç bir çıktı elde edemeyiz. Çünkü biz burada fonksiyonumuzu sadece tanımlamakla yetindik. Henüz bu fonksiyonun işletilmesini sağlayacak kodu yazmadık. Şimdi bu fonksiyonun hayat kazanmasını sağlayacak kodları girebiliriz:
Kod:
# -*- coding: utf-8 -*- def fonksiyon_adi(): print "merhaba dünya!" fonksiyon_adi()
Burada fonksiyonun çalışmasını sağlayan şey, en son satırdaki fonksiyon_adi() kodudur. Bu satırı ekleyerek, daha önce tanımladığımız fonksiyonu çağırmış oluyoruz. Bu satıra teknik olarak fonksiyon çağrısı (function call) adı verilir.
Yukarıdaki kodları çalıştırdığımızda ekrana merhaba dünya! satırının yazdırıldığını göreceğiz.
Tebrikler! Böylece ilk eksiksiz fonksiyonunuzu hem tanımlamış, hem de çağırmış oldunuz.
Dilerseniz, bu konunun en başında verdiğimiz dilekçe örneğini de bir fonksiyon haline getirelim:
Kod:
# -*- coding: utf-8 -*- def dilekce_gonder(): print """\ Sayın Mehmet Bey, 19.12.2009 tarihinde yaptığımız başvurunun sonuçlandırılması hususunda yardımlarınızı rica ederiz. Saygılarımızla, Orçun Kunek""" dilekce_gonder()
Elbette bu örnek Pythondaki fonksiyonların bütün yeteneklerini ortaya koymaktan aciz. Üstelik bu fonksiyon, en başta bahsettiğimiz sorunları da çözemiyor henüz. Ama ne yapalım... Şu ana kadar öğrendiklerimiz ancak bu kadarını yapmamıza müsaade ediyor. Biraz sonra öğreneceklerimiz sayesinde fonksiyonlarla çok daha faydalı ve manalı işler yapabileceğiz.
Yeni bir bölüme geçmeden önce isterseniz fonksiyonlarla ilgili olarak buraya kadar öğrendiğimiz kısmı biraz irdeleyelim:
Pythonda fonksiyonlar bizi aynı şeyleri tekrar tekrar yazma zahmetinden kurtarır. Fonksiyonlar bir bakıma bir taslaklama sistemi gibidir. Biraz sonra vereceğimiz örneklerde bu durumu daha net olarak göreceğiz.
Pythonda fonksiyonları kullanabilmek için öncelikle fonksiyonu tanımlamamız gerekir. Bir fonksiyonu tanımlamak için def adlı parçacıktan yararlanıyoruz. Pythonda bir fonksiyon tanımı şöyle bir yapıya sahiptir:
Kod:
def fonksiyon_adi():
Fonksiyon adlarını belirlerken Türkçe karakter kullanmıyoruz. Fonksiyonlarımıza vereceğimiz adların olabildiğince betimleyici olması herkesin hayrınadır.
Elbette bir fonksiyonun işlevli olabilmesi için sadece tanımlanması yetmez. Ayrıca tanımladığımız fonksiyonun bir de gövdesinin olması gerekir. Fonksiyon gövdesini girintili olarak yazıyoruz. Dolayısıyla Pythonda bir fonksiyon temel olarak iki kısımdan oluşur. İlk kısım fonksiyonun tanımlandığı başlık kısmı; ikinci kısım ise fonksiyonun içeriğini oluşturan gövde kısmıdır. Başlık ve gövde dışında kalan her şey fonksiyonun da dışındadır. Bir fonksiyon, gövdedeki girintili kısmın bittiği yerde biter. Örneğin şu bir fonksiyondur:
Kod:
def selamla(): print "merhaba dünya!" print "nasılsın?"
Bu fonksiyon def selamla(): satırıyla başlar, print nasılsın? satırıyla biter.
Fonksiyonların işlevli olabilmesi için bu fonksiyonlar tanımlandıktan sonra çağrılmalıdır. Örneğin yukarıdaki fonksiyonu şöyle çağırıyoruz:
Kod:
def selamla(): print "merhaba dünya!" print "nasılsın?" selamla()
Dediğimiz gibi, bu fonksiyon, def selamla(): satırıyla başlar, print nasılsın? satırıyla biter. Fonksiyon çağrısı dediğimiz selamla() satırı bu fonksiyonun dışındadır. Çünkü bu satır selamla() fonksiyonunun gövdesini oluşturan girintili kısmın dışında yer alıyor.
Eğer bu söylediklerimiz size biraz kafa karıştırıcı gelmişse, hiç endişe etmenize gerek yok. Tam olarak ne demek istediğimizi biraz sonra gayet net bir şekilde anlamanızı sağlayacak örnekler vereceğiz.
Dilerseniz bu bölümü kapatmadan önce fonksiyonlarla ilgili birkaç basit bir örnek daha yaparak bu konuya ısınmanızı sağlayalım:
Kod:
# -*- coding: utf-8 -*-
[INDENT] def tek():print Girdiğiniz sayı bir tek sayıdır!def cift():print Girdiğiniz sayı bir çift sayıdır! sayi = raw_input(Lütfen bir sayı giriniz: )
if int(sayi) % 2 == 0:cift()else:tek()
[/INDENT]
Burada tek() ve cift() adlı iki fonksiyon tanımladık. tek() adlı fonksiyonun görevi ekrana Girdiğiniz sayı bir tek sayıdır! çıktısı vermek. cift() adlı fonksiyonun görevi ise ekrana Girdiğiniz sayı bir çift sayıdır! çıktısı vermek.
Daha sonra Pythonun raw_input() fonksiyonunu kullanarak kullanıcıdan bir sayı girmesini istiyoruz. Ardından da kullanıcı tarafından girilen bu sayının tek mi yoksa çift mi olduğunu denetliyoruz. Eğer sayı 2ye tam olarak bölünüyorsa çifttir. Aksi halde bu sayı tektir.
Burada cift() ve tek() adlı fonksiyonları nasıl çağırdığımıza dikkat edin. Eğer kullanıcının girdiği sayı 2ye tam olarak bölünüyorsa, yani bu sayı çiftse, daha önce tanımladığımız cift() adlı fonksiyon devreye girecektir. Yok, eğer kullanıcının verdiği sayı 2ye tam olarak bölünmüyorsa o zaman da tek() adlı fonksiyon devreye girer...
Bu kodlarda özellikle fonksiyonların nerede başlayıp nerede bittiğine dikkat edin. Daha önce de dediğimiz gibi, bir fonksiyon def parçacığıyla başlar, gövdesindeki girintili alanın sonuna kadar devam eder. Girintili alanın dışında kalan bütün kodlar o fonksiyonun dışındadır. Mesela yukarıdaki örnekte tek() ve cift() birbirinden bağımsız iki fonksiyondur. Bu fonksiyonlardan sonra gelen sayı değişkeni de fonksiyon alanının dışında yer alır.
