Python’da Lambda Fonksiyonları: Tek Satırlık Fonksiyonlar Ne İşe Yarar?

Bir listedeki sayıları karesini almak gibi basit, tek seferlik bir işlem için tam bir def fonksiyonu yazmak bazen gereğinden fazla resmi kaçar. Python bu tür kısa, “kullan-at” ihtiyaçlar için özel bir araç sunuyor: lambda fonksiyonları.

Lambda Fonksiyonu Aslında Nedir?

Lambda, isimsiz (anonim), tek satırlık bir fonksiyon tanımlama biçimi. Normal bir fonksiyonu şöyle tanımlarız:

python

def kare_al(x):
    return x ** 2

Aynı işi lambda ile şöyle yapabiliriz:

python

kare_al = lambda x: x ** 2

Sözdizimi basit: lambda anahtar kelimesinden sonra parametreler, ardından iki nokta üst üste, ardından da doğrudan döndürülecek ifade geliyor. return yazmaya gerek yok — lambda, ifadenin sonucunu otomatik olarak döndürüyor. Ama dikkat: bir lambda içine birden fazla satırlık bir mantık ya da bir if/else bloğu sığdıramazsınız; sadece tek bir ifade yazabilirsiniz.

Peki Neden def Yerine Lambda?

Lambda’nın asıl gücü, bir fonksiyonu isim vermeden, başka bir fonksiyonun içine “anlık” olarak geçirebilmenizden geliyor. Bu, özellikle map(), filter() ve sorted() gibi başka fonksiyonlarla birlikte kullanıldığında ortaya çıkıyor:

python

sayilar = [1, 2, 3, 4, 5]

# map() ile her elemanın karesini alma
kareler = list(map(lambda x: x ** 2, sayilar))
# [1, 4, 9, 16, 25]

# filter() ile sadece çift sayıları seçme
ciftler = list(filter(lambda x: x % 2 == 0, sayilar))
# [2, 4]

Burada her seferinde ayrı bir def kare_al(x): fonksiyonu tanımlamak yerine, işlemi olduğu yerde, tek satırda tanımlıyoruz. Bu, kodu daha kısa ve okunması bazen daha kolay hale getiriyor.

sorted() ile Belki En Kullanışlı Örnek

Lambda’nın gerçek değerini en çok hissettiren kullanımlardan biri, bir listeyi özel bir kritere göre sıralamak:

python

ogrenciler = [("Ayşe", 85), ("Mehmet", 92), ("Zeynep", 78)]

# Notlarına göre büyükten küçüğe sırala
siralanmis = sorted(ogrenciler, key=lambda x: x[1], reverse=True)
# [('Mehmet', 92), ('Ayşe', 85), ('Zeynep', 78)]

key parametresine, her elemanın hangi değere göre sıralanacağını söyleyen bir fonksiyon veriliyor — ve bunu ayrı bir def yazmadan, tek satırda tanımlamak, kodu oldukça sadeleştiriyor.

Ne Zaman Lambda Kullanmamalı?

Lambda’nın kısalığı bazen bir tuzağa dönüşebiliyor. Mantık biraz karmaşıklaştığında — birden fazla koşul, birden fazla adım gerektiğinde — lambda kodu okunaksız hale getirebiliyor. String metotları yazımızda da benzer bir prensipten bahsetmiştik: bir işleme anlamlı bir isim vermek, kodun ne yaptığını daha sonra siz ya da başka biri okuduğunda büyük kolaylık sağlıyor; lambda ise isimsiz olduğu için bu belgeleme avantajını sunmuyor. Genel kural: eğer bir işlemi tanımlamak için birden fazla satıra ihtiyaç duyuyorsanız ya da fonksiyonu birden fazla yerde tekrar kullanacaksanız, normal bir def fonksiyonu her zaman daha doğru tercih.

Sonuç

Lambda fonksiyonları, Python’un “kısa ve öz” felsefesinin güzel bir örneği — özellikle map(), filter() ve sorted() ile birlikte kullanıldığında, kodu gereksiz uzunluktan kurtarıyor. Ama her araç gibi, doğru yerde kullanılması gerekiyor.

Yorum yapın