מדריך למתחילים להבנת תפקודי Python Lambda

מדריך למתחילים להבנת תפקודי Python Lambda

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





במאמר זה נסביר את כל מה שאתה צריך לדעת על הפונקציות המסתוריות האלה, כיצד להשתמש בהן ולמה הן שימושיות.





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





מהי למבדה בפייתון?

למדה היא פשוט דרך להגדיר פונקציה ב- Python. לפעמים הם מכונים 'מפעילי למבדה' או 'פונקציות למבדה'.

אם השתמשת בעבר בפייתון, כנראה שהגדרת את הפונקציות שלך באמצעות def מילת מפתח, וזה עבד עבורך מצוין עד כה. אז למה יש דרך אחרת לעשות את אותו הדבר?



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

Lambdas מחזירים אובייקט פונקציה, שניתן להקצות אותו למשתנה. למבדים יכולים להיות כל מספר טיעונים, אך הם יכולים להיות בעלי ביטוי אחד בלבד. אינך יכול לקרוא לפונקציות אחרות בתוך lambdas.





השימוש הנפוץ ביותר בפונקציות למבדה הוא בקוד הדורש פונקציה פשוטה של ​​שורה אחת, שם יהיה מוגזם לכתוב פונקציה נורמלית מלאה. זה מכוסה בפירוט רב יותר להלן, תחת 'מה לגבי מפה, סינון וצמצום?'.

כיצד להשתמש ב- Lambdas ב- Python

לפני שנסתכל על פונקציית למבדה, בואו נסתכל על פונקציה סופר בסיסית שהגדירה את הדרך 'המסורתית':





def add_five(number):
return number + 5

print(add_five(number=4))

פונקציה זו היא בסיסית מאוד, אך היא משמשת להמחשת lambdas. שלך עשוי להיות מורכב יותר מזה. פונקציה זו מוסיפה חמישה לכל מספר שהועבר אליה באמצעות מספר פָּרָמֶטֶר.

כך זה נראה כפונקציית למבדה:

add_five = lambda number: number + 5

print(add_five(number=4))

במקום להשתמש def , המילה למבדה משמש. אין צורך בסוגריים, אלא כל מילה שאחריה למבדה מילת המפתח נוצרת כפרמטרים. המעי הגס משמש להפרדת הפרמטרים והביטוי. במקרה זה, הביטוי הוא מספר + 5 .

אין צורך להשתמש ב- לַחֲזוֹר מילת המפתח --- הלמדה עושה זאת עבורך באופן אוטומטי.

כך תוכל ליצור פונקציית lambda עם שני ארגומנטים:

איך להרכיב 2 תמונות יחד באייפון
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

אם אתה עדיין לא בטוח בנוגע לנקודת הלמבדות, החלק הבא יצלול פנימה ויעזור לך לראות את האור.

למדות של פייתון עם מפה, סינון וצמצום

לספריית הליבה של פייתון יש שלוש שיטות הנקראות מַפָּה , לְהַפחִית , ו לְסַנֵן . שיטות אלה הן אולי הסיבות הטובות ביותר לשימוש בפונקציות למבדה.

ה מַפָּה פונקציה מצפה לשני ארגומנטים: פונקציה ורשימה. הוא לוקח את הפונקציה הזו ומחיל אותה על כל אלמנט ברשימה, ומחזיר את רשימת האלמנטים שהשתנו כאובייקט מפה. ה רשימה הפונקציה משמשת להמיר שוב את אובייקט המפה שנוצר לרשימה.

להלן אופן השימוש במפה ללא למבדה:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

פונקציית מפה זו שימושית למדי, אך היא יכולה להיות טובה יותר. ה add_five הפונקציה מועברת כטיעון, אך מה אם אינך רוצה ליצור פונקציה בכל פעם שאתה משתמש במפה? אתה יכול להשתמש בלמדה במקום!

כך נראה אותו קוד, רק כשהפונקציה מוחלפת בלמדה:

שירות שירות פרופיל המשתמש של Windows 10 נכשל בכניסה
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

כפי שאתה יכול לראות, השלם add_five הפונקציה אינה נדרשת עוד. במקום זאת, פונקציית הלמבה משמשת לשמירה על סדר נקי.

עם ה לְסַנֵן פונקציה, התהליך הוא אותו דבר. לְסַנֵן לוקח פונקציה ומחיל אותה על כל אלמנים ברשימה ויצר רשימה חדשה עם רק האלמנטים שגרמו לפונקציה להחזיר את True.

ראשית, ללא למדות:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

אין שום דבר רע בקוד הזה, אבל הוא נהיה קצת ארוך. בואו נראה כמה שורות למבדה יכולה להסיר:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

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

לבסוף, בואו נסתכל לְהַפחִית . הפחתה היא פונקציית פייתון מגניבה נוספת. הוא מחיל חישוב מתגלגל על ​​כל הפריטים ברשימה. תוכל להשתמש בזה כדי לסכם סכום כולל, או להכפיל את כל המספרים יחד:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

דוגמה זו צריכה לייבא לְהַפחִית מ ה פונקציות מודול, אך אל דאגה, מודול ה- functools הוא חלק מספריית הליבה של פייתון.

הסיפור זהה מאוד למבדה, אין צורך בפונקציה:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

דברים שכדאי להיזהר מהם עם פייתון למבדים

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

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

לקבלת טיפים נוספים, בדוק את שלנו מדריך לתכנות מונחה עצמים ב- Python ועיין במדריך השאלות הנפוצות שלנו למתחילים ב- Python.

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל 3 דרכים לבדוק אם דוא'ל אמיתי או מזויף

אם קיבלת מייל שנראה קצת מפוקפק, תמיד עדיף לבדוק את האותנטיות שלו. להלן שלוש דרכים לדעת אם הודעת דוא'ל אמיתית.

קרא הבא
נושאים קשורים
  • תִכנוּת
  • פִּיתוֹן
  • הדרכות קידוד
על הסופר ג'ו קוברן(136 מאמרים פורסמו)

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

עוד מאת ג'ו קוברן

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה