פייתון/פייתון גרסה 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>
שימוש
[עריכה]- למדא הוא ביטוי ולכן יכול להופיע במקומות בהם פונקציה אינה יכולה להופיע כמו למשל בתוך רשימה וכארגומנטים של פונקציות.
- למדא הוא ביטוי יחיד בעוד פונקציה היא רשימת פקודות ולכן יש כמות מוגבלת של פקודות שניתן להכניס אל הלמדא.
- באמצעות הלמדא ניתן לעבור על פונקציות ללא שם.
דוגמה לצורך בלמדא
[עריכה]בדוגמה זו אנו קוראים לפונקציה "סכום" הפונקציה הזו מקבלת כארגומנט את 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) מבצעת הפונקציה את הפעולה וקוראת ל-
מבצעת את הפעולה . עכשיו מתבצעת פעולת
אם נסכם נוכל לתאר את התהליך כקריאה המתעלמת מכל הכתוב בשורה של ולמעשה מבצעת
בקריאה השנייה, אנחנו קוראים קודם כל ל-, כלומר מבצעים
לאחר מכאן אנחנו קוראים ל-שקוראת ל- כך שמתבצע שוב
לאחר מכאן