21 Ağustos 2008 Perşembe

Lambda

Lambda fonksiyonları , karmaşık olmayan fonksiyonları hemen tek satırda ifade etmemizi sağlar. Nasılmı?

def is_odd(number):
return number % 2 > 0 # sayının 2 ye bölümünden kalan 0 dan büyüktür önermesini döndür.


yerine

is_odd = lambda number : number % 2 > 0 # döndürülecek değer de : işaretinden sonra yazılıyor.
^ parametreler
burada
sıralanıyor.


Şeklinde yazabiliriz. Lambda fonksiyonları tanımlarken virgül koyarak birden fazla parametre belirleyebiliriz

Örneğin aşağıdaki fonksiyon 2 kenar açısını parametre olarak alıp üçgenin 3. açısını döndürüyor.

find_angle = lambda a, b : 180 - (a + b)
print find_angle(30,60)
90


Abartıp lambda fonksiyonları tanımlarken argüman tipi parametreler oluşturabiliriz.

find_angle = lambda a = 10 ,b = 20 : 180 -(a , b)
print find_angle(a=50) # b yi belirtmediğimiz için default değeri 20 kabul edilecek
110


özetle şunu kafanıza kazıyın : lambda parametreler : döndürülecek sonuç

1 yorum:

  1. Aynı zamanda lambda ile pythonic kod yazmak bize zaman kazandırır.
    Örneğin bir listedeki çift sayıları almak istiyorsak:

    ---------- (code tagına izin verilmiyor)

    #0'dan verilen sayıya kadar olan (sayı hariç) çift sayıları döndürür.
    cift_sayilar = lambda n : filter((lambda x: x%2==0), range(n))

    ----------

    Burada lambda ve filter gibi güçlü iki fonksiyonu birleştirdik. İstersek lambda ve map'i de birleştirebiliriz. Zaten lambda, map ve filter Python'un Lisp dilinden aldığı en önemli miraslardır.

    YanıtlaSil