Site icon Mobilhanem

Python Fonksiyonlar

python dersleri

Merhaba arkadaşlar,

Mobilhanem.com da Python Dersleri serisinin bir dersinde yine beraberiz. Bu derste Python Fonksiyon konusunu işleyeceğiz. Bu yazıda Fonksiyonların ne olduğunu ne işe yaradığını,  nasıl kullanıldığını ve fonksiyon tiplerini baştan sona ele alacağım. Hadi o zaman başlayalım 🙂

Fonksiyon Nedir?

Python Eğitim serisinin ilk dersinden beri hep fonksiyon kavramını kullandık. Dilerseniz kafanızı çok karıştırmadan fonksiyon kavramını kısaca tanımlayayım.

Fonksiyonlar kısaca belirli bir işlevi yapmak için oluşturulan komutlar kümesidir. Örneğin print() fonksiyonu ekrana çıktı vermemizi sağlayan işlevi yapmak için belirli komutlar bulundurur.

Neden Fonksiyonlar?

Şimdi sizin aklınıza şöyle bir şey gelmiştir ben fonksiyon kullanmasam olmaz mı? Tabi ki kullanmasanız da olur ama belli bir yerden sonra kod satırı arttığında karmaşıklık artıyor ve kontrol etmek zorlaşıyor. Onun için biz fonksiyonları kullanıyoruz.

Böylece biz yapmak istediğimiz işlevler için her seferinde kod yazmak yerine bir defa fonksiyon oluşturuyoruz işlem yapmak istediğimiz zaman çağırıp kullanıyoruz. Böylece fazla kod karmaşığından kurtuluyoruz.

Kısaca Fonksiyonlar;

Fonksiyonların ne olduğunu ve neden kullandığımızı biliyorsak arttık nasıl kullanacağımızı öğrenelim.

Fonksiyon Kullanımı

Python da iki tür fonksiyon vardır birincisi Python ile hazır gelen fonksiyonlar yani gömülü fonksiyonlar, ikincisi ise bizim oluşturduğumuz fonksiyonlar. Print() ve type() gibi fonksiyonlar Python ile birlikte geldiği için biz sadece onları kullanmak istediğimiz yerde çağırıyoruz.

Fonksiyonların genel kullanım taslağı şu şekildedir.

def fonksiyon_Adi(parametre1,parametre2):

            işlemler

fonksiyon_Adi()

Genel olarak taslağı gördük şimdi bir örnekle gösterelim bunun için. Ben bunun için hemen basit bir fonksiyon oluşturayım.

def  yazdir():
    print("Mobilhanem.com Python Dersleri")

Gördüğünüz gibi fonksiyonumuzu oluşturduk. Şimdi fonksiyonumuzu çağıralım bunun için fonksiyonun adını yazmamız yeterli kullanımı şu şekilde;

 Fonksiyon_Adi(parametre1,parametre2)

Bizim fonksiyonuz parametre almadığı için bizim bir şey yazmamıza gerek yok. Hemen çağıralım;

def yazdir():
    print("Mobilhanem.com Python Dersleri")

yazdir()
Çıktı:
Mobilhanem.com Python Dersleri

Bir defa çağırdığımız için bu işlevi bir defa yaptı biz kaç defa çağırırsak o kadar ekrana yazdırır.

def yazdir():
    print("Mobilhanem.com Python Dersleri")

yazdir()
yazdir()
yazdir()
Çıktı:
Mobilhanem.com Python Dersleri
Mobilhanem.com Python Dersleri
Mobilhanem.com Python Dersleri

Dilerseniz aynı fonksiyonu bide farklı şekilde yazalım. Burada return deyimini kullanacağım çünkü biz fonksiyonlarla sadece ekrana yazdırma işlemi değilde bize sonuç  döndürecek fonksiyonlarda yazacağız bu yüzden  return kullanacağız.

Return Deyimi

return deyimi fonksiyonun geriye herhangi bir değer döndürmesini sağlar.

def yazdir():
    return "Mobilhanem.com Python Dersleri"

print(yazdir())

Çıktı:
Mobilhanem.com Python Dersleri

Bu şekilde fonksiyonun döndürdüğü değeri yazdırmış olduk.

Python da parametre almayan fonksiyonları öğrendik. Şimdi parametre alan ve geriye değer döndüren bir fonksiyon yazalım.

def toplama(sayi1,sayi2):
   return sayi1+sayi2

print("Sonuç :",toplama(3,4)) 

Çıktı:

Sonuç: 7

Bu şekilde girdiğimiz sayıların toplamını döndüren bir fonksiyon yazmış olduk.  Peki biz bu parametrelere önceden değer atayabilir miyiz tabi ki de hemen göstereyim;

 def toplama(sayi1=6,sayi2=8):

   return sayi1+sayi2

print("Sonuç :",toplama())

Çıktı:
Sonuç : 14

Gördüğünüz gibi parametrelere önceden değer ataya biliyoruz. Bu yüzden Fonksiyonu çağırdığımız zaman parametrelere değer vermemize gerek yok. Peki parametreye değer verirsek ne olur hemen değer verip deneyelim.

def toplama(sayi1=6,sayi2=8):
    return sayi1+sayi2

print("Sonuç :",toplama(4,3))

Sonuç : 7

Gördüğünüz gibi bize bu sefer 14 değil de 7 sonucunu geriye döndürdü. Yani eğer biz fonksiyonu çağırdığımız zaman değer vermezsek Python default olarak önceden parametrelere verdiğimiz değerleri atar.

Şuana kadar hep fonksiyon içinde parametrelere değer yani argüman verdik bide dışarıdan aldığımız değerler ile fonksiyonlarda işlem yapalım.

def toplama(sayi1,sayi2):
    return sayi1+sayi2

sayi1 = int(input("Birinci sayıyı girin :"))
sayi2 = int(input("İkinci sayıyı girin :"))

print("Sonuç :",toplama(sayi1,sayi2)) 

Çıktı:
Birinci sayıyı girin :25
İkinci sayıyı girin :36Sonuç : 61

Bunu da öğrendiğimize göre şimdi fonksiyonlarla bir hesap makinesi yapalım.

def toplama(sayi1,sayi2):
    return sayi1+sayi2

def cikarma(sayi1,sayi2):
    return sayi1-sayi2

def carpma(sayi1,sayi2):
    return sayi1*sayi2

def bolme(sayi1,sayi2):
    return sayi1/sayi2
while True:
secim = input("Bir Seçim Yapın :")
if secim == "q":
    exit()

sayi1 = int(input("Birinci sayıyı girin :"))
sayi2 = int(input("İkinci sayıyı girin :"))
if secim=="1":
    print("Sonuç :", toplama(sayi1, sayi2))
elif secim =="2":
    print("Sonuç :", cikarma(sayi1,sayi2))
elif secim =="3":
    print("Sonuc :",carpma(sayi1,sayi2))
elif secim=="4":
    print("Sonuç :",bolme(sayi1,sayi2))
else:
    print("Yanlış seçim lütfen tekrar deneyin")
    exit()

Çıktı:
print("Sonuç :",toplama(sayi1,sayi2))
print("""
Toplama :1
Çıkarma :2
Çarpma  :3
Bölme   :4
Çıkış   :q  """)

Return deyimini anlatmış olduk. Şimdi biz fonksiyonları tanımlarken istediğimiz yerde çağırıp kullandığımızı söylemiştik peki fonksiyonları başka bir fonksiyonun içinde çağırıp kullanabiliyoruz hemen gösterelim.

Fonksiyon İçinde Fonksiyon

Şimdi bu uygulamamızda Standart Sapma hesapla uygulaması yapacağız. Kısaca Standart Sapma anlatırsak. Standart sapma, bir serideki sayıların, serinin aritmetik ortalamasından farklarının karelerinin toplamının dizinin eleman sayısının bir eksiğine bölümünün kare köküdür.

Biraz açmak gerekirse, standart sapma hesaplamak için;

Bizde bunun için önce serinin ortalamasını ortHesapla() fonksiyonu hesaplayacağız bulduğumuz sunucu return ile döndüreceğiz ve standartHesapla() fonksiyonunun da kullanacağız.

 

def ortHesapla(liste):
    ort = sum(liste) / len(liste)
    return ort

def standartHesapla(liste):
    standartKarekok=[]    
    for i in range(len(liste)):
        standartKarekok.append((liste[i]-ortHesapla(liste))**2)
    standartSapma = (sum(standartKarekok)/len(liste)-1)**0.5
    return  standartSapma

liste = [22,23,20,14,32,2,40]
print("Standart Sapma:",standartHesapla(liste))

Çıktı:

Standart Sapma: 11.249489784348588

Fonksiyon içinde fonksiyon çağırıp kullanmayı öğrendik. Eminim aklınıza şöyle bir soru gelmiştir: Fonksiyonlar kendi kendini çağırabiliyor mu? Tabi ki yapabiliyor hatta buna fonksiyonlara bir isim bile verilmiş 🙂 Hadi o zaman başlığımızı atalım.

Recursive (Özyineli) Fonksiyonlar :

Recursive fonksiyonlar kendi kendini çağıran fonksiyonlardır. Kısaca bir döngü gibi düşünebiliriz burada dikkat etmemiz gereken şey sonsuz döngüye girmemesi için bir şart koşulu kullanmalıyız. Recursive fonksiyonlar genel olarak diğer fonksiyonlara göre karmaşıklığı arttırdığı için ve fazla bellek kullandığı için pek kullanmayı önermem ama işe yaradığı durumlarda vardır. Hemen bir örnekle göstereyim;

Bunun için fibonacci sayıların toplamını hesaplama uygulaması yapacağım.

Fibonacci dizisi, her sayının kendinden önceki  iki sayının   toplanması sonucu oluşan bir sayı dizisidir.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55

def fibonacci(sayi):
    if sayi==0:
        return 0

    if sayi==1:
        return 1

    return fibonacci(sayi-1) + fibonacci(sayi-2)

sayi=int(input("Bir sayi gir :"))
print(fibonacci(sayi))

Çıktı:

Bir sayi gir :8
21
# 8' kadar ki sayıların toplamı 21 eder

Resursive fonksiyonları da anlatmış oldum sisten isteğim tam olarak oturması için sizde faktoriyel hesaplama uygulamasını recursive fonksiyonu ile yapmanız eğer yapamazsanız soru-cevap kısmından yazmanız dilerseniz buradan da yardım alabilirsiniz.

Mobilhanem.com da Python Dersleri serisinin bu dersinde Python Fonksiyonlar konusunu işledik. Bir sonraki derste Python da Fonksiyonların Kapsamı konusunu anlatacağım.Anlamadığınız bir yer ve ya eksik yada yanlış gördüğünüz bir yer varsa iletişime geçmekten çekinmeyin.

218
Exit mobile version