Kurs
def anahtar sözcüğü, fonksiyon başlıkları, dokümantasyon dizeleri (docstring) ve gövdeleriyle kendi Python fonksiyonlarınızı yazabilirsiniz. Ancak, anında fonksiyon yazmanın daha hızlı bir yolu vardır ve bunlara lambda anahtar sözcüğünü kullandığınız için lambda fonksiyonları denir.
Bazı fonksiyon tanımları o kadar basittir ki bir lambda fonksiyonuna dönüştürülebilir. Bunu yaparak daha az satır kod yazarsınız; bu da oldukça kullanışlıdır ve özellikle büyük programlar yazıp bakımını yaparken işinize yarar.
lambda Fonksiyonu
Burada raise_to_power fonksiyonumuzu bir lambda fonksiyonu olarak yeniden yazıyoruz. lambda anahtar sözcüğünden sonra argümanların adlarını belirtiriz; ardından, fonksiyonun ne döndürmesini istediğimizi belirten ifadeyi iki nokta üst üste ile takip ederiz.
raise_to_power = lambda x, y: x ** y
raise_to_power(2, 3)
8
Belirtildiği gibi, lambda fonksiyonları fonksiyonları hızlı ve pratik şekilde yazmanıza olanak tanır; bu yüzden onları her zaman kullanmanızı önermeyiz, ancak aşağıdaki örnekte olduğu gibi işinize yarayabilecek durumlar vardır.
map() ve lambda Fonksiyonu
map fonksiyonu iki argüman alır: bir fonksiyon ve liste gibi bir dizi; ardından bu fonksiyonu dizinin tüm öğelerine uygular. lambda fonksiyonlarını map'e isim vermeden de iletebiliriz; bu durumda bunlara anonim fonksiyonlar denir.
Bu örnekte, listedeki tüm öğeleri karesini alan lambda fonksiyonu üzerinde map() kullanıyoruz ve sonucu square_all içinde saklıyoruz.
nums = [48, 6, 9, 21, 1]
square_all = map(lambda num: num ** 2, nums)
print(square_all)
<map object at 0x103e065c0>
square_all'ı yazdırmak bunun bir map nesnesi olduğunu gösterir; dolayısıyla ne döndürdüğünü görmek için onu listeye çevirip sonucu yazdırırız.
print(list(square_all))
[2304, 36, 81, 441, 1]
lambda Fonksiyonu Yazmanın Etkileşimli Bir Örneği
Aşağıdaki echo_word fonksiyonu 2 parametre alır: bir string değer word1 ve bir tamsayı değer echo. word1'in echo kopyasının birleştirilmesinden oluşan bir dize döndürür.
Yukarıdaki basit fonksiyonu bir lambda fonksiyonuna dönüştüreceksiniz.
def echo_word(word1, echo):
"""Concatenate echo copies of word1."""
words = word1 * echo
return words
Bir sonraki örnekte şunları yapacaksınız:
word1veechodeğişkenlerini kullanarakecho_wordadlı bir lambda fonksiyonu tanımlayın. Yukarıdakiecho_word()fonksiyon tanımının yaptığını yineleyin.echo_word()fonksiyonunu sırasıyla'hey'dize argümanıyla ve5değeriyle çağırın. Çağrıyıresultdeğişkenine atayın. Son olarakresultdeğişkenini yazdırın.
# Define echo_word as a lambda function: echo_word
echo_word = (lambda word1, echo: word1 * echo)
# Call echo_word: result
result = echo_word('hey', 5)
# Print result
print(result)
Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu üretir:
heyheyheyheyhey
Lambda fonksiyonları hakkında daha fazla bilgi edinmek için, kursumuz Python Data Science Toolbox (Bölüm 1) kapsamındaki bu videoya göz atın.
Bu içerik, Hugo Bowne-Anderson tarafından hazırlanan DataCamp’in Python Data Science Toolbox (Bölüm 1) kursundan alınmıştır.
DataCamp'in Python Fonksiyonları Eğitimi'ne göz atın.
