רעננו את הדף והקליקו למעבר לנושא הבא:

פונקציה ממעלה גבוהה יותר -  higher order function

פונקציה ממעלה גבוהה יותר - higher order function

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

def shalom (name): return "shalom "+ name +"!" def shalomAndWelcome (name): return shalom(name)+" welcome!" print(shalom("eddie")) >>> shalom eddie! print (shalomAndWelcome("yossi")) >>> shalom yossi! Welcome!

למעלה אנו רואים פונקציה שנקראת shalom המקבלת שם כפרמטר ומחזירה את השם בליווי ברכת שלום וסימן קריאה בסוף.

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


אנו לוקחים את האפשרות של הכנסת פונקציה כמשתנה (argument) בתוך פונקציה אחרת על מנת להוסיף אפשרויות לפונקציה המקורית ולחסוך בשורות קוד.


def plus (x,y): return x+y def minus (x,y): return x-y def multi (x,y): return x*y def div (x,y): return x/y def calcul (func,x,y): return "the answer is "+str(func(x,y)) print(calcul(multi,5,6)) >>> the answer is 30 print(calcul(plus,5,6)) >>> the answer is 11

למעלה, השקעתי בכם וכתבתי ארבע פונקציות העושות את ארבע פעולות החשבון הבסיסיות על שני פרמטרים מספריים (x,y). המתכנת שהגיע אחרי, רוצה להתחנף לבוס, וכותב פונקציה בשם calcul המקבלת שלושה פרמטרים, הראשון הוא פונקציה (יכולה להיות כל אחת מהארבע שכתבתי בזיעת אפי) השניים האחרים הם פרמטרים מספריים x ו- y , והיא מחזירה את תוצאת החישוב בליווי המשפט the answer is לשם הקישוט, הוא יכול לעשות זאת משום שפייתון מאפשרת את המבנה הזה. עניין טכני להתעכב עליו, היינו צריכים להפוך את התוצאות המספריות המתקבלות מהפונקציות השונות למחרוזת str (כזכור מספר יכול להיות integer או בפעולת החילוק float), משום שאחרת לא יכולנו להדביק את מספר (מסוגinteger או float) באמצעות + למחרוזת אחרת שהיא "the answer is".

פונקציה המחזירה פונקציה או מקבלת פונקציה כמשתנה נקראת- פונקציה ממעלה גבוה יותר (higher order function). הוד מעלתה.

Related Posts

See All

פונקציית קישוט – decorator

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