Python’da Lambda Fonksiyonu Kullanımı
Bu yazımızda, Python’da oldukça yaygın olarak kullanılan, ancak bazen kafa karıştırıcı olabilen “lambda” fonksiyonu hakkında detaylı bilgiler vereceğiz.
Python Lambda Fonksiyonu
Python’da, birçok görev için standart fonksiyon tanımlamalarını kullanabiliriz. Ancak bazen kısa, tek kullanımlık fonksiyonlara ihtiyaç duyarız. İşte bu noktada lambda fonksiyonları devreye girer. Lambda fonksiyonları, adı olmayan (anonim) ve genellikle tek satırda tanımlanan fonksiyonlardır.
“Peki, neden adı lambda?” Çünkü lambda fonksiyonunu tanımlarken lambda
anahtar kelimesini kullanırız. Sözdizimi (syntax) şu şekildedir: lambda parametre(ler): ifade
. Burada “ifade”, fonksiyonun döndüreceği değeri belirtir.
Özetle, Python’daki lambda fonksiyonları, bir ya da daha fazla parametre alabilen fakat yalnızca tek bir işlem gerçekleştiren kısa fonksiyonlardır. Bu fonksiyonları tanımlarken, standart fonksiyonlarda kullanılan def anahtar kelimesine gerek duyulmaz.
Örnek vermek gerekirse, iki sayıyı toplayan bir lambda fonksiyonu şu şekilde yazılabilir:
1 2 |
topla = lambda x, y: x + y print(topla(5, 3)) # Çıktı: 8 |
Aşağıdaki örnekte görüleceği üzere lamda fonksiyonu olarak tanımlanan “x” değişkeni, parametre olarak belirtilen ve 20 olarak belirlenmiş “y” değerine 50 ekler ve sonucu döndürür. Bakınız:
1 2 |
x = lambda y: y + 50 print(x(20)) #Çıktı: 70 |
Aşağıdaki örnekte ise birden fazla parametreyle kullanılan lambda fonksiyonu gösterilmiştir. Tek satırda yazılmış olduğuna dikkat ediniz:
1 2 |
x = lambda y, z : y * z print(x(10, 12)) #Çıktı: 120 |
Lambda fonksiyonları parametre olarak fonksiyon alan yüksek seviyeli fonksiyonlarda yaygın bir şekilde kullanılırlar. Örneğin:
1 2 3 4 5 6 |
def topla(n): return lambda x : x + n toplam = topla(5) print(toplam(21)) |
Lambda fonksiyonlarının en yaygın kullanıldığı yerlerden biri de sorted()
, filter()
ve map()
gibi yüksek seviyeli fonksiyonlardır. Örneğin, bir listenin elemanlarını ikinci değerlerine göre sıralamak için şöyle bir kod yazabiliriz:
1 2 3 |
liste = [(1, 2), (3, 1), (4, 4)] sirali = sorted(liste, key=lambda x: x[1]) print(sirali) # Çıktı: [(3, 1), (1, 2), (4, 4)] |
Python’da “lambda” fonksiyonu, tek satırda yazılmasından ötürü haliyle daha az yer kaplayan kodlar yazarız. “Peki, hangi durumlarda normal bir fonksiyon yerine lambda fonksiyonunu tercih etmeliyiz?” Bu soruya maddeler halinde cevap verelim:
- Basit İşlemler: Lambda fonksiyonları genellikle sadece bir ifade içerir. Eğer yapmak istediğiniz işlem sadece birkaç basit işlemi kapsıyorsa, lambda fonksiyonu kullanmak daha uygundur.
- Tek Seferlik Kullanım: Lambda fonksiyonlarını, bir kod parçasında sadece bir kez kullanılacak ve daha sonra tekrar kullanılmayacak fonksiyonlar için tercih edebilirsiniz. Bu tür kullanımlarda fonksiyona isim vermek gereksiz olabilir.
- Fonksiyon Parametreleri: Bazı fonksiyonlar diğer fonksiyonları parametre olarak alır (örneğin:
sorted()
,map()
,filter()
). Bu gibi durumlarda, lambda fonksiyonları hızlı ve pratik bir çözüm sunar. - Kısa Süreli Kullanım: Eğer bir fonksiyonu yalnızca kodunuzun belirli bir bölümünde geçici olarak kullanmayı planlıyorsanız, lambda fonksiyonu idealdir.
Bir fonksiyon yalnızca tek bir yerde kullanılacak ve defalarca kez çağrılmayacaksa, ayrı bir fonksiyon tanımlamak yerine “lambda” fonksiyonunu kullanmak daha mantıklı olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#Lambda fonksiyonu yokken numbers = [11,13,15,17] def square(num): return num ** 2 result = list(map(square, numbers)) print (result) #Çıktı: [121, 169, 225, 289] #Lambda fonksiyonu ile numbers = [11,13,15,17] result = list(map(lambda num: num ** 2, numbers)) print (result) #Çıktı: [121, 169, 225, 289] |