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

Reklam Engelleyici Algılandı

Lütfen sitemizde reklamlara izin verin Değerli okurumuz, Farkında olarak veya olmayarak Adblocker (Reklam Engelleyici) kullanarak sitemizi ziyaret etmektesiniz. Apple Türk olarak size en hızlı, en doğru bilgi ve haberleri sunmak için çaba gösteriyoruz. Bizim de bu kapsamda maliyetlerimizi karşılayabildiğimiz tek gelir kalemimiz, internet reklamları. Elimizden geldiğince bu reklamların sizi rahatsız etmemesi için azami özen göstermeye çalışıyoruz. Bu kapsamda AdBlock (Reklam Engelleme) aracınızda www.appleturk.com alan adını beyaz listeye almanızı, veya bu alan adında engelleyiciyi kapatmanızı ve tüm internet sektörünün sağlıklı gelişimi için Adblock aracınızı kaldırmanızı rica ediyoruz.