פונקציות#

אג’נדה#

  • מהן פונקציות ולמה כדאי להשתמש בהן.

  • פונקציות מובנות של פייתון

  • מימוש פונקציות בעצמכם

עד עכשיו פגשנו פונקציות “מוכנות מראש” - כמו len ו-type, שעובדות על מגוון טיפוסי נתונים, ומתודות של מחרוזות כמו find וlower. ראינו איך הן מקבלות ערך (למשל המחרוזת) ומחזירות תוצאה (כמו מספר או מחרוזת אחרת). אבל מה קורה אם אנחנו רוצים לבצע פעולה שאין לה פונקציה מוכנה? בדיוק בשביל זה נלמד איך לכתוב פונקציות משלנו: נבין איך מגדירים אותן, איך משתמשים בהן, ואיך גורמים להן להחזיר תוצאה שנוכל להשתמש בה בהמשך הקוד.

שימו לב

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

מהי פונקציה?#

הגדרה: פונקציה היא רצף פקודות עם שם, שמבצע משימה מסוימת – באופן עצמאי משאר הקוד.

לפונקציה יש שני מרכיבים מרכזיים: קלט (Input) ופלט (Output). הקלט מורכב מערכים שהפונקציה מקבלת כדי לבצע את המשימה שלה (נקראים גם פרמטרים - Parameters או ארגומנטים - Arguments), והפלט הוא התוצאה שהפונקציה מחזירה בחזרה. במילים אחרות, אנחנו “מזינים” לפונקציה נתונים, והיא מעבדת אותם ומחזירה לנו תשובה בהתאם.

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

איך נחשב את ההיקף של שלושה מלבנים?#

c1=3*2+3*2
print(c1)
c2=1*2+3*2
print(c2)
c3=3*2+5*2
print(c3)
12
8
16

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

בעיה ראשונה - כפילות בקוד#

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

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

למה פונקציות?#

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

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

  • הפשטה – ברגע שיש לי פונקציה מוכנה, אפשר להשתמש בה כ”קופסה שחורה” ולהשתמש בה בלי לזכור או לדעת איך היא עובדת. אתם לדוגמה השתמשתם בפונקציה int() שיודעת להמיר מחרוזת או float לint. אבל אתם לא צריכים לדעת איך היא עושה זאת כדי להשתמש בה.

  • תחזוקה – אם גיליתם טעות (באג) בקוד שלכם, תוכלו לתקן אותה במקום אחד, והם משפיעים אוטומטית על כל השימושים בפונקציה.

  • קריאות – הקוד הראשי נשאר קצר וברור, ומציג את זרימת הלוגיקה בצורה מובנת.

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