Python'da Lambda Fonksiyonları: Ayrıntılı Rehber
Lambda fonksiyonları, Python'da küçük, isimsiz (anonim) fonksiyonlar oluşturmak için kullanılan özel bir yapıdır. lambda anahtar kelimesiyle tanımlanırlar ve normal fonksiyonlardan farklı olarak bir isme sahip değillerdir.
Temel Yapı
lambda arguments: expression
lambda: Lambda fonksiyonu tanımlamak için kullanılan anahtar kelimearguments: Fonksiyonun aldığı parametreler (virgülle ayrılmış)expression: Çalıştırılacak ifade (dönüş değeri olur)
Örneklerle Lambda Fonksiyonları
1. Temel Kullanım
# Normal fonksiyon def kare(x): return x ** 2 # Lambda fonksiyonu kare_lambda = lambda x: x ** 2 print(kare(5)) # 25 print(kare_lambda(5)) # 25
2. Çoklu Parametre
topla = lambda a, b: a + b print(topla(3, 7)) # 10
3. Varsayılan Parametre
carp = lambda x, y=2: x * y print(carp(5)) # 10 (y=2 varsayılan) print(carp(5, 3)) # 15
Lambda Fonksiyonlarının Yaygın Kullanım Alanları
1. sorted() ile Kullanım
ogrenciler = [("Ahmet", 25), ("Zeynep", 19), ("Mehmet", 22)] # Yaşa göre sıralama print(sorted(ogrenciler, key=lambda x: x[1])) # [('Zeynep', 19), ('Mehmet', 22), ('Ahmet', 25)]
2. filter() ile Kullanım
sayilar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Çift sayıları filtrele ciftler = list(filter(lambda x: x % 2 == 0, sayilar)) print(ciftler) # [2, 4, 6, 8, 10]
3. map() ile Kullanım
sayilar = [1, 2, 3, 4, 5] # Sayıların karesini al kareler = list(map(lambda x: x ** 2, sayilar)) print(kareler) # [1, 4, 9, 16, 25]
4. reduce() ile Kullanım
from functools import reduce sayilar = [1, 2, 3, 4] # Sayıları çarp carpim = reduce(lambda x, y: x * y, sayilar) print(carpim) # 24 (1*2*3*4)
Lambda Fonksiyonlarının Avantajları
Kısa ve Öz: Basit işlemler için fonksiyon tanımlamaya gerek kalmaz
Okunabilirlik: Küçük işlemlerde kodun daha anlaşılır olmasını sağlar
Anonim: İsim vermeden kullanılabilirler
Fonksiyonel Programlama:
map,filter,reducegibi fonksiyonlarla iyi uyum sağlar
Sınırlamalar
Tek İfade: Lambda fonksiyonları yalnızca tek bir ifade içerebilir
Karmaşık Mantık: Çok satırlı veya karmaşık işlemler için uygun değildir
Hata Ayıklama: İsimsiz oldukları için hata mesajlarında tanımlayıcı bilgi vermezler
İleri Düzey Kullanımlar
1. Çoklu Koşullu İfadeler
kategorize = lambda x: "Küçük" if x < 10 else ("Orta" if 10 <= x < 20 else "Büyük") print(kategorize(5)) # Küçük print(kategorize(15)) # Orta print(kategorize(25)) # Büyük
2. İç İçe Lambda Fonksiyonları
carpan_uret = lambda n: lambda x: x * n ikiyle_carp = carpan_uret(2) print(ikiyle_carp(11)) # 22 besle_carp = carpan_uret(5) print(besle_carp(11)) # 55
3. Sözlük Sıralama
urunler = [ {"ad": "Telefon", "fiyat": 5000}, {"ad": "Tablet", "fiyat": 3500}, {"ad": "Bilgisayar", "fiyat": 12000} ] # Fiyata göre sırala siralanmis = sorted(urunler, key=lambda x: x["fiyat"]) print(siralanmis) # [{'ad': 'Tablet', 'fiyat': 3500}, {'ad': 'Telefon', 'fiyat': 5000}, {'ad': 'Bilgisayar', 'fiyat': 12000}]
Lambda vs Normal Fonksiyon
| Özellik | Lambda Fonksiyonu | Normal Fonksiyon (def) |
|---|---|---|
| İsim | İsimsiz (anonim) | İsimli |
| Gövde | Tek ifade | Çok satırlı olabilir |
| Dönüş değeri | Otomatik | return gerekli |
| Karmaşıklık | Basit işlemler için | Karmaşık işlemler için |
| Kullanım Alanı | Fonksiyonel programlama | Genel amaçlı |
En İyi Uygulamalar
Basit İşlemler İçin Kullanın: Karmaşık mantıklardan kaçının
Aşırı Kullanmayın: Okunabilirliği bozduğunda normal fonksiyon tercih edin
Anlamlı Şekilde Adlandırın: Lambda bir değişkene atanacaksa açıklayıcı isim verin
Fonksiyonel Programlama Araçlarıyla Kullanın:
map,filter,reducegibi fonksiyonlarla iyi uyum sağlar
Lambda fonksiyonları Python'da güçlü bir araçtır, ancak uygun yerlerde kullanıldığında kodunuzu daha okunabilir ve Pythonic hale getirir.
Hiç yorum yok:
Yorum Gönder