Python

Ders 11: Fonksiyonlar

Artık kodlarımız uzadı ve bazı işlemleri tekrar tekrar yazmak istemiyoruz. Fonksiyonlar tam da bunun için var: bir işi paketleyip gerektiğinde çağırdığın tekrar kullanılabilir kod blokları.


Fonksiyon Nedir?

Fonksiyon, belli bir görevi yapan ve gerektiğinde çağırabileceğin kod parçacığıdır. Fonksiyon yazmak kodu düzenli, okunabilir ve tekrar kullanılabilir yapar.


# Basit bir fonksiyon tanımı
def merhaba():
    print("Merhaba! Fonksiyon çalıştı.")

# Fonksiyonu çağırma
merhaba()

Çıktı:


Merhaba! Fonksiyon çalıştı.

Parametreler ve Argümanlar

Fonksiyonlar içine bilgi alabilir. Bu bilgilere parametre diyoruz. Fonksiyonu çağırırken verdiğimiz değerlere argüman denir.


def selamla(isim):
    print("Merhaba " + isim + "!")

selamla("Ayşe")
selamla("Mehmet")

Bu sayede aynı fonksiyon farklı verilerle tekrar kullanılabilir.


Geri Dönüş Değeri (return)

Fonksiyonlar bir değer de döndürebilir. Böylece fonksiyonun sonucunu başka bir değişkende saklayıp kullanabilirsin.


def topla(a, b):
    return a + b

sonuc = topla(5, 7)
print("Toplam:", sonuc)

return gördüğünde fonksiyon çalışmayı durdurur ve o değeri çağıran yere gönderir.


Varsayılan Parametreler ve Anahtar Kelime Argümanları


def merhaba(isim="Dost"):
    print("Merhaba " + isim + "!")

merhaba()          # Merhaba Dost!
merhaba("Selin")   # Merhaba Selin!

def bilgiler(isim, yas=0):
    print(isim, "—", yas)

bilgiler("Can", yas=30)
bilgiler("Ece")

Değişken Sayıda Argüman: *args ve **kwargs

Bazen kaç argüman geleceğini bilmezsin. Bu durumda *args ve **kwargs çok işe yarar.


def topla_hepsi(*args):
    toplam = 0
    for s in args:
        toplam += s
    return toplam

print(topla_hepsi(1, 2, 3, 4))  # 10

def yaz(**kwargs):
    for anahtar, deger in kwargs.items():
        print(anahtar, ":", deger)

yaz(ad="Ali", meslek="Öğrenci")

Yerel ve Global Değişkenler

Fonksiyon içinde tanımlanan değişkenler yalnızca o fonksiyonun içindedir. Bunlara yerel (local) değişken denir. Fonksiyon dışında tanımlanan değişkenler ise globaldir.


x = 10  # global

def f():
    y = 5  # local
    print("y:", y)
    print("x:", x)

f()
print(x)
# print(y)  # hata verir, çünkü y sadece f içinde tanımlı

Fonksiyonların Anonim Hali: lambda

Küçük tek satırlık fonksiyonlar için lambda kullanılabilir.


carp = lambda a, b: a * b
print(carp(3, 4))  # 12

# map ve filter ile sık kullanılır
sayilar = [1, 2, 3, 4]
kareler = list(map(lambda x: x*x, sayilar))
print(kareler)

Fonksiyonların Dokümantasyonu: docstring


def topla(a, b):
    """
    Bu fonksiyon iki sayıyı toplar ve sonucu döndürür.
    Parametreler:
    a: ilk sayı
    b: ikinci sayı
    """
    return a + b

print(topla.__doc__)

Küçük Görevler

  1. Bir fonksiyon yaz: ortalama(liste). Verilen sayı listesinin ortalamasını döndürsün.
  2. Bir fonksiyon yaz: asalsayi_mi(n). Girilen n sayısının asal olup olmadığını True veya False ile döndürsün.
  3. Bir fonksiyon yaz: ters_cevir(s). Girilen metni ters çevirip geri döndürsün. (Örn: ‘merhaba’ -> ‘abahrem’)

İyi Uygulamalar

  • Fonksiyonlar tek bir sorumluluk taşısın. Bir fonksiyon bir işi yapsın.
  • Anlamlı isimler kullan. f() yerine hesapla_toplam() gibi.
  • Gerektiğinde docstring ekle. Bu ileride seni kurtarır.
  • Pure function yani yan etkisi olmayan fonksiyonları tercih et. Global değişkenleri fonksiyon içinde değiştirmek kafa karıştırır.

Bir önceki Ders: Python Ders 10 Sözlük — Bir sonraki Ders: Python Modüller ve Kütüphaneler

Bir yanıt yazın

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

Başa dön tuşu