פייתון/פייתון גרסה 3/ביטוי למדא

מבנה

עריכה

ביטוי למדא (a lambda expression) הוא ביטוי המחליף את הצורך בשימוש בהגדרת פונקציה.

Lambda arguments : expression 

קריאה לביטוי למדא

עריכה

ביטוי למדא מתפקד כמו פונקציה וכך גם הקריאה אליו lam_func(2,3).

ביטוי למדא:

lam_func=lambda x, y: x+y

print(lam_func(2,3))
>>>5

מחליף את הצורך בפונקציה :

def lam (x,y):
    return x+y

print(lam(2,3))
>>>5

אם נקרא למשתנה של ביטוי הלמדא נקבל את מיקומה במערכת:

lam_func=lambda x, y: x+y

print(lam_func)
>>><function <lambda> at 0x05893AE0>

שימוש

עריכה
  1. למדא הוא ביטוי ולכן יכול להופיע במקומות בהם פונקציה אינה יכולה להופיע כמו למשל בתוך רשימה וכארגומנטים של פונקציות.
  2. למדא הוא ביטוי יחיד בעוד פונקציה היא רשימת פקודות ולכן יש כמות מוגבלת של פקודות שניתן להכניס אל הלמדא.
  3. באמצעות הלמדא ניתן לעבור על פונקציות ללא שם.

דוגמה לצורך בלמדא

עריכה

בדוגמה זו אנו קוראים לפונקציה "סכום" הפונקציה הזו מקבלת כארגומנט את func :

def sum(func, num):
    return lambda x: func(x)+ num

print(sum(lambda x: 2*x, 5)(6))

שמו לב כי הביטוי של למדא מפורק לחלקים : (lambda x: 2*x)(6).

קריאה זו מקבילה להוראה:

func=lambda x: 2*x

def sum(func, num):
    return lambda x: func(x)+ num

print(sum(func, 5)(6))

אם הינו רוצים לייצר את הפקודה בתוך פונקציה אחת בלבד היינו מתקשים לייצר אותה.

למדא מקוננת

עריכה

למדא מקוננת כפונקציה מקוננת בפונקציה אחרת, כאשר מפעילים תחילה את הפונקציה הגדולה ולאחר מכן את הקטנה:

function_1 = lambda x: x*2
function_2 = lambda func: (lambda x: func(x + 6) )

print(function_2(function_1)(5))
>>>22

נשם לב תחילה כי ביטוי הלמדה השני זקוק לפונקציה ( ) ולערך   ולכן בקריאה שלנו אליו עלינו להציב שני ערכים: פונקציה ונעלם.

במקרה שלנו קראנו לפונקציה עם   ופונקציה ראשונה ( ).

פייתון מכניס את הנעלם לתוך הפונקציה השנייה   לאחר מכן מכניסים אל תוך   ומקבלים  

דוגמה ב

עריכה
function_1 = lambda func_2, x : func_2(func_2(x+6))

function_2 = lambda x: function_1((lambda y: y+1), x)

print(function_2(5))
print(function_1(function_2,5))
>>>13
>>>27

במקרה הראשונה אנו מבקשים לקרוא לפונקציה מספר 2. פונקציה זו צריכה בקריאה שלה רק לנעלם על פי  

לאחר הצבה של x (במקרה שלנו 5) מבצעת הפונקציה את הפעולה   וקוראת ל- 

  מבצעת את הפעולה  . עכשיו מתבצעת פעולת  

אם נסכם נוכל לתאר את התהליך כקריאה המתעלמת מכל הכתוב בשורה של   ולמעשה מבצעת  

בקריאה השנייה, אנחנו קוראים קודם כל ל- , כלומר מבצעים  

לאחר מכאן אנחנו קוראים ל- שקוראת ל-  כך שמתבצע שוב  

לאחר מכאן