
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
- Bir fonksiyon yaz:
ortalama(liste). Verilen sayı listesinin ortalamasını döndürsün. - Bir fonksiyon yaz:
asalsayi_mi(n). Girilen n sayısının asal olup olmadığını True veya False ile döndürsün. - 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()yerinehesapla_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
