Lambda kafamı karıştırdı

Lambda olayı biraz kafamı karıştırdı. Bunun üzerine mi düşeyim? Yoksa vakitle oturtabilir miyim? vs. ne önerirsiniz?

Tam olarak neresi kafanızı karıştırdı?

Aslında bakınca basit gibi duruyor ancak yapmaya çalışınca aklıma hiçbir şey gelmiyor. Bu durum biraz normal öğrenirken biliyorum ama bunda biraz daha karıştırıyorum.
Tam olarak nesi derken yapısı desem daha doğru olur. Belki çalışma mantığını tam anlasam daha iyi olacak.

Lambda fonksiyonları isimsiz fonsiyonlardır, genellikle fonksiyonun dönürdürdüğü değer yerine referansının gerektiği yerlerde kullanılır. Mesela grafik arayüzdeki bir düğmeye, çağıracağı fonksiyonu atarken:

from tkinter import Tk, Button

tk = Tk()
tk.geometry("200x200")

def output(text):
    print(text)

button = Button(
    tk,
    text="Button",
    command=lambda: output("Hello, World!")
).pack(expand=True)

tk.mainloop()

Normal fonksiyon:

def <name>(<args>):
    return <return-value>

Lambda fonksiyonu:

lambda <args>: <return-value>
# veya
<name> = lambda <args>: <return-value>
3 Beğeni
# Araba yaşı hesaplama
arabaYasi = lambda yil: 2021 - yil
print("Arabanızın yaşı:",arabaYasi(2012))

# Bakiye Hesaplama
bakiye = {
    'miktar':100
}
while True:
    b_add = int(input("Eklenecek miktar: "))
    if b_add == 00:
        print("Çıkış yapılıyor.")
        break
    bakiyeEkle = lambda b_add: bakiye["miktar"] + b_add
    bakiye['miktar'] = bakiyeEkle(b_add)
    print(bakiye)

Sanırım daha iyi anladım :slight_smile:

2 Beğeni

Bu örneklere doğru da diyemem yanlış da diyemem. Lambdalar daha çok tekrar kullanılmayacak fonksiyonlar tanımlamak içindir.

data = [400, 176, 64, 175, 355, 13, 207, 298, 397, 386, 31, 120, 120, 236, 241, 123, 249, 364, 292, 153]
result = list(filter(lambda num: num % 2 == 1, data))

print(result)
2 Beğeni