# Python Fonksiyonlar

Python fonksiyonlar (functions) konusunu işliyoruz.

Fonksiyonlar, sadece çağrıldıklarında çalışan kod bloklarıdır. Bir fonksiyon ile tanımladığınız belirli komutlarınız, yeri geldiğinde çağrılarak, parametreler gönderilerek kullanılır ve istenilirse size bir değer döndürür.

1. Fonksiyon Oluşturmak ve Çağırmak

Python programlama dilinde bir program oluşturabilmek için def terimini kullanırız ve ardından fonksiyon ismini yazarız.

def ornekFonksiyon():
print("Merhaba Dünya!")

Oluşturduğumuz bir fonksiyonu programımızın istediğimiz yerinde çağırabiliriz. Bunun için sadece fonksiyon ismini belirtmemiz yeterlidir.

ornekFonksiyon()

2. Fonksiyon Parametreleri

Oluşturduğumuz fonksiyona parametre göndererek işleme sokmak istiyorsak, fonksiyonumuzu oluştururken parantezlerin arasında bu parametreleri belirtmeli ve fonksiyonu çağırırken ilgili parametre değerleri ile çağırmalıyız.

def selamVer(isim,yas):
print("Merhaba, {} {} yaşındadır".format(isim,yas))
selamVer("Yunus",24)
# Merhaba, Yunus 24 yaşındadır

Örnekte gördüğünüz gibi fonksiyona iki adet parametre alacağını söyledik ve fonksiyonu çağırırken bu iki parametrenin de değerini gönderdik. Fonksiyon da gelen bu parametreleri ilgili yerlere otomatik olarak yerleştirdi. Bir örnek daha yapalım.

def usAlma(x):
print(x**2)
usAlma(7) # 49

Fonksiyonlarınız da istediğiniz kadar parametre kullanabilirsiniz fakat ilgili fonksiyonu çağırırken tüm parametrelere değer atadığınızdan emin olmalısınız.

def toplama(x,y):
print(x+y)
toplama(25) # !! HATA VERİR (eksik parametre değeri) !!

3. Öntanımlı Parametre İle Fonksiyon Oluşturmak

Fonksiyonlarımızı oluştururken alacağı parametrelerin değerlerini öntanımlı olarak belirleyebiliriz. Bu sayede kullanıcı eğer parametrenin değerini göndermezse biz bu parametreye bir öntanımlı değer atayabiliriz.

def dogumYeri(sehir="Bilinmiyor"):
print("Doğum yeri: " + sehir)
dogumYeri("Ankara") # Doğum yeri: Ankara
dogumYeri("İstanbul") # Doğum yeri: İstanbul
dogumYeri() # Doğum yeri: Bilinmiyor

4. Belirsiz Sayıda Fonksiyon Parametresi

Yukarıdaki örneklerde gönderilecek parametre adedini belirledik ve fonksiyon çağırırken belirlenen parametre adedince değer gönderdik. Peki yazdığımız fonksiyon onlarca,yüzlerce parametreye ihtiyaç duyduğunda tüm parametreleri tek tek fonksiyon oluştururken belirtecek miyiz? Tabiki de hayır Python programlama dilinde eğer belirsiz sayıda değişken ile fonksiyon oluşturacaksanız * işaretiyle parametre adı belirlemelisiniz. Bu sayede tanımladığınız parametre bir demete dönüşecek ve gönderdiğiniz tüm değerler bu demete eleman olarak eklenecektir.

def meyveler(*meyve):
print(meyve[0])
print(meyve[1])
meyveler("elma","muz","çilek","kavun")
# elma
# muz

5. Fonksiyon Dönüş Değeri Belirleme

Fonksiyonlarımızın çağrıldıkları zaman çalıştıklarını artık öğrendik. Ayrıca bu fonksiyonlar ile ekrana çıktı verebildiğimizi de yukarıdaki örneklerde gördünüz. Şimdi ise oluşturduğumuz fonksiyonlara return ile dönüş değeri döndürmesini söyleyeceğiz ve fonksiyonlarımızı çalışması için çağırdığımızda bize bir değer döndürecek.

def carpma(x,y):
return x*y
sonuc = carpma(7,5)
print(sonuc) # 35

Bu basit örneğimizde fonksiyonumuzun çarpma işlemini yaparak bize return ile sonucu döndürmesini istedik. Böylece fonksiyon sonucunu bir değere atayarak veya direkt print ile ekrana yazdırarak işlem sonucumuzu öğrenmiş olduk.

def selamVer():
return "Merhaba!"
print(selamVer()) # Merhaba!

6. Boş Fonksiyon Oluşturmak

Herhangi bir sebep yüzünden boş fonksiyon oluşturmak istediğinizde hata almamak için pass terimini kullanabilirsiniz.

def dahaSonra():
pass

7. Yinelemeli Fonksiyonlar

Yinelemeli (recursive) fonksiyonlar kendi kendini çağıran fonksiyonlardır. Bir fonksiyonu yinelemeli hale getirmek için herhangi bir terim kullanmamıza gerek yoktur. Fonksiyonu oluştururken içeride yine aynı fonksiyonu çağırarak yinelemeli hale getirebilirsiniz. Yinelemeli fonksiyonlar birçok alanda kullanılır ve işlem kolaylığı sağlar. Daha çok matematiksel hesaplamalarda tercih edilmesine rağmen kendi işlevlerinizi de yinelemeli olarak yerine getirebilirsiniz.

def faktoriyel(x):
if x == 1:
return 1
else:
return x * faktoriyel(x-1)
sonuc = faktoriyel(5)
print(sonuc) # 120

Örneğimizde basit bir faktoriyel hesaplama fonksiyonunu yinelemeli bir fonksiyon ile yazdık. Burada 5 sayısının faktoriyelini hesaplarken (5*4*3*2*1) sonucunu alabilmek için fonksiyonumuzun içinde her seferinde sayının bir küçüğünü tekrardan fonksiyon ile çağırarak çarptık ve en son 1 sayısına geldiğimizde fonksiyonumuzu sonlandırdık. Sizde kendinize yinelemeli fonksiyonlarla yazacağınız örnekler bularak programlama da pratiklik kazanabilirsiniz.