Anasayfa / PYTHON / Python Fonksiyonlar (Functions) ve Örnek Uygulamalar

Python Fonksiyonlar (Functions) ve Örnek Uygulamalar

Bir web sitesi, hesap makinesi veya yapay zeka aracı geliştiriyor olun; kod yazarken belirli işlemlerin programın farklı yerlerinde defalarca tekrarlanması gereken durumlarla sürekli karşılaşırsınız. Örneğin, bir arazi hesaplama programında farklı geometrik şekillerin alanını sürekli hesaplamak zorunda kalabilirsiniz. Her ihtiyaç duyduğunuzda aynı kodları baştan yazmak, hem programcının iş yükünü büyük oranda artırır hem de hata yapma olasılığını yükseltir.

PYTHON FONKSİYONLAR EĞİTİMİ VİDEOMUZ İÇİN TIKLAYIN

İşte bu noktada devreye yazılım dünyasının en önemli kavramlarından biri olan “Fonksiyonlar” (Functions) girer. Bu rehberimizde, Python’da fonksiyon mantığını, nasıl oluşturulduklarını ve projelerinize nasıl hız kazandıracaklarını adım adım öğreneceğiz.


1. Python’da Fonksiyon Nedir ve Neden Kullanılır?

Fonksiyonlar, sık tekrarlanan işlemleri gerektiğinde kullanmak üzere paketlediğimiz, ihtiyaç halinde ismiyle çağırıp çalıştırabildiğimiz isimlendirilmiş küçük kod bloklarıdır. Bu yapı, bütün modern programlama dillerinde kullanılan evrensel bir yöntemdir.

Fonksiyon Kullanmanın Sağladığı Avantajlar:

  • Tekrarı Önler: Programcıyı aynı kodları defalarca yazma yükünden kurtarır (modülerlik sağlar).
  • Hata Oranını Düşürür: Daha az kod yazıldığı ve mevcut kod tekrar kullanıldığı için hata yapma olasılığı ciddi şekilde azalır.
  • Bellek Tasarrufu: Fonksiyon, sadece ismiyle çağrıldığında çalıştığı için bilgisayarın bellek (RAM) kullanımından tasarruf edilmesini sağlar.
  • Okunabilirlik: Uzun ve karmaşık kodları daha küçük ve anlamlı parçalara ayırdığı için kodun okunmasını ve analiz edilmesini son derece kolaylaştırır.

2. Gömülü (Built-in) Fonksiyonlar Nelerdir?

Python programlama dili, biz kod yazmaya başlamadan önce arka planda bizim için hazırlanmış birçok hazır fonksiyonla birlikte gelir; bunlara “gömülü fonksiyonlar” (built-in functions) denir. Şu ana kadar ekrana yazı yazdırmak için kullandığınız print(), kullanıcıdan veri almak için kullandığınız input(), bir metnin uzunluğunu ölçen len() veya veri tipini belirten type() komutlarının hepsi aslında birer fonksiyondur. Bu fonksiyonları kullanmak için özel bir tanım yapmanıza gerek yoktur, sadece ismini ve parantezlerini yazıp kullanabilirsiniz.

Bunun dışında math (matematik) gibi modüllerin içerisine hapsedilmiş özel fonksiyonlar da vardır. Örneğin from math import sqrt diyerek çağırabileceğiniz sqrt() fonksiyonu, içine verdiğiniz sayının karekökünü anında hesaplar.

3. Kendi Fonksiyonumuzu Nasıl Tanımlarız? (def Komutu)

Python’da kendi özel fonksiyonlarımızı oluşturmak (tanımlamak) için İngilizce “define” kelimesinden türetilen def anahtar kelimesi kullanılır.

Adım Adım Fonksiyon Tanımlama Kuralları:

  1. def komutunu yazın.
  2. Fonksiyona, yaptığı işi anlatan bir isim verin (Örneğin: selam_ver).
  3. İsmin hemen yanına normal parantez açıp kapatın () ve satırın sonuna iki nokta üst üste (:) koyun.
  4. Enter’a basıp alt satıra geçin. Python’un hizalama kuralı gereği, fonksiyonun içine yazacağınız kodlar bir “Sekme” (Tab) boşluk bırakılarak içeriden yazılmalıdır.

Örnek Uygulama: Ekrana Mesaj Yazan Fonksiyon

def selamla():
    print("Merhaba Arkadaşlar!")

Eğer sadece bu kodu yazıp programı çalıştırırsanız, ekranda hiçbir şey göremezsiniz! Çünkü fonksiyonlar tanımlandıktan sonra sadece çağrıldıklarında (call) çalışırlar.

def selamla():
    print("Merhaba Arkadaşlar!")

selamla() # İşte fonksiyonu burada ismini yazarak çağırdık.

Yukarıdaki kod çalıştığında ekrana Merhaba Arkadaşlar! yazacaktır. Dilerseniz bu fonksiyonu alt alta 5 kez çağırarak aynı mesajı yorulmadan 5 kez yazdırabilirsiniz.


4. Fonksiyonlara Dışarıdan Veri Göndermek: Parametreler ve Argümanlar

Bir fonksiyonun her seferinde birebir aynı işi yapması (örneğin hep “Merhaba Arkadaşlar” demesi) çok kullanışlı değildir. Fonksiyonların asıl gücü, dış dünyadan verileri alıp, bu verileri işleyip bize özel sonuçlar sunabilmeleridir.

Fonksiyona işlemesi için parantez içerisinden gönderdiğimiz bu verilere “parametre” (veya argüman) adı verilir.

Örnek Uygulama: İsme Özel Selamlama

def isme_ozel_selamla(ad):
    print("Merhaba " + ad)

isme_ozel_selamla("Arda")  # Çıktı: Merhaba Arda
isme_ozel_selamla("Çağan") # Çıktı: Merhaba Çağan

Bu örnekte parantez içerisindeki ad kelimesi bir parametredir. Fonksiyon her çağrıldığında, parantez içine yazdığımız argümanı (örneğin “Arda” bilgisini) ad değişkenine atar ve ekrana o şekilde yazdırır.

Varsayılan (Default) Parametre Kullanımı Bazen kullanıcı fonksiyona bir argüman göndermeyi unutabilir. Bu durumda programın hata vermesini engellemek için fonksiyona varsayılan bir değer (default) tanımlayabiliriz.

def ulke_yaz(ulke = "Türkiye"):
    print(ulke + " benim memleketim.")

ulke_yaz("Almanya") # Çıktı: Almanya benim memleketim.
ulke_yaz()          # Çıktı: Türkiye benim memleketim.

İkinci çağrımda parantez içini boş bırakmamıza rağmen program çökmedi, çünkü ulke="Türkiye" tanımı sayesinde fonksiyon varsayılan değere tutundu.


5. Fonksiyondan Veri Geri Döndürmek: return İfadesi

Şu ana kadar yazdığımız fonksiyonlar sonuçları print() ile sadece ekrana yazdırdı. Ancak gerçek projelerde, fonksiyonun hesapladığı sonucu ekrana yazdırmasını değil, matematiksel işleme veya veritabanına kaydetmeye devam edebilmemiz için o veriyi bize “geri döndürmesini” isteriz.

Veri döndürme işlevi için İngilizce “geri dön” anlamına gelen return anahtar kelimesi kullanılır. return ifadesi, fonksiyonun işini bitirip sonucunu oluşturduğu an çağrıldığı yere bu sonucu yollamasını sağlar.

Örnek Uygulama: Ortalama Hesaplama Makinesi

def ortalama_hesapla(sinav1, sinav2, sozlu):
    ortalama = (sinav1 + sinav2 + sozlu) / 3.0
    return ortalama

# Fonksiyona 3 tane not gönderdik.
# Fonksiyon bunu hesapladı ve sonucu geri gönderdi. Biz de bunu bir değişkene kaydettik.
sonuc = ortalama_hesapla(35, 60, 40)

if sonuc < 50:
    print("Dersten Kaldınız.")
else:
    print("Dersi Geçtiniz.")

Gördüğünüz gibi, eğer içeride sadece print kullansaydık elde edilen ortalamayı alıp bir if-else (karar yapısı) ile kontrol edemezdik. return ifadesi, fonksiyonlarımızın hesaplama sonuçlarını başka yerlerde serbestçe kullanabilmemize olanak tanır.


6. Değişkenlerin Kapsamı (Yerel ve Genel Değişkenler)

Python’da bir değişken oluşturduğunuzda, bu değişkene her yerden ulaşılamayabilir. Buna “Kapsam” (Scope) adı verilir.

  • Yerel (Local) Değişken: Sadece bir fonksiyonun içinde tanımlanan değişkendir. Bu değişkene sadece o fonksiyonun içerisinden ulaşılabilir, programın geri kalanı (dışarısı) bu değişkeni tanımaz.
  • Genel (Global) Değişken: Herhangi bir fonksiyonun dışında, programın en başında tanımlanan değişkendir. Bu değişkene programın her yerinden (fonksiyonların içinden bile) ulaşabilirsiniz.

Eğer bir fonksiyonun içindeyken, dışarıda (genel) oluşturulmuş bir değişkenin değerini kalıcı olarak değiştirmek isterseniz, değişkenin önüne global anahtar kelimesini eklemeniz gerekir.


7. İleri Seviye Konular: Lambda ve Özyineleme (Kısaca)

Fonksiyonlar konusunda ustalaştıkça karşınıza çıkacak iki terim daha vardır:

  • Lambda Fonksiyonlar: Bazen tek satırlık ve çok basit bir matematiksel işlem için def komutuyla uzun bir tanım yapmak istemeyiz. lambda ifadesi, “isimsiz ve tek satırlık” pratik fonksiyonlar tanımlamanızı sağlar. Örneğin: kdvli_fiyat = lambda fiyat: fiyat * 1.18 kodu, kendisine verilen fiyatı anında KDV’li haliyle çarpan küçük bir fonksiyondur.
  • Özyinelemeli (Recursive) Fonksiyonlar: Bir problemi çözerken kendi kod bloğunun içinde “kendi kendini” tekrar tekrar çağıran fonksiyonlara denir. İleri düzey programlamada (örneğin faktöriyel hesaplamalarında veya Fibonacci sayı dizisinde) sıklıkla bu teknik kullanılır.

Sonuç: Fonksiyonlar (Functions), yazdığınız kodları profesyonel, temiz ve modüler bir “yazılım projesine” dönüştüren altın anahtardır. Parametre alışverişini ve return kavramını iyi anladığınızda, karmaşık görünen yüzlerce satırlık sistemleri sadece birkaç fonksiyon çağrısıyla yönetebildiğinizi fark edeceksiniz. Şimdi kod editörünüzü açıp kendi fonksiyonlarınızı tasarlayarak bu heyecan verici yapıyı bizzat test edin!

Etiketlendi:

3 Yorum

Cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir