פונקציה היא קוד שקיבל שם. מגדירים אותה פעם אחת עם def, ואז קוראים לה כמה פעמים שרוצים, כל פעם עם ערכים אחרים. כאן רואים בדיוק לאן התוכנית קופצת כשקוראים לפונקציה, ומה return מחזיר. כדאי להכיר קודם את הלולאות בפייתון.
פונקציה היא כמו מכונה: מכניסים לה ערכים, היא עובדת, ומוציאה תוצאה.
def area(width, height):
result = width * height
return result
print(area(4, 3))
def מגדיר פונקציה. בסוגריים יש פרמטרים: שמות לערכים שהפונקציה מקבלת. הגוף מוזז פנימה, ולא רץ עד שקוראים לפונקציה.
area(4, 3) קורא לפונקציה. 4 נכנס ל-width ו-3 נכנס ל-height, לפי הסדר. אפשר לקרוא שוב עם ערכים אחרים.
return מסיים את הפונקציה ושולח ערך בחזרה לשורה שקראה לה. אפשר לשמור אותו במשתנה ולהמשיך לחשב איתו.
print רק מראה על המסך. return מחזיר ערך שאפשר להשתמש בו. פונקציה בלי return מחזירה None.הזיזו את המחוונים כדי לשנות את הערכים שנשלחים לפונקציה. לחצו "שורה הבאה" וראו את הקפיצה: משורת הקריאה אל הגוף, ובחזרה עם התוצאה. משתנים מקומיים מסומנים בשם הפונקציה בסוגריים.
נסו את אלה:
אפשר לשנות את הקוד ולהריץ פייתון אמיתי. בפעם הראשונה הטעינה לוקחת כמה שניות.
הפונקציה מדפיסה, אבל מחזירה None. אי אפשר לחשב עם התוצאה.
✗ מחזיר None
def double(n):
print(n * 2)✓ מחזיר ערך
def double(n):
return n * 2def רק מגדיר. בלי קריאה עם סוגריים, הגוף לא רץ אף פעם.
✗ לא קורה כלום
def hello():
print("Hi")✓ קוראים לה
def hello():
print("Hi")
hello()פייתון קוראת מלמעלה למטה. קריאה לפני ה-def נותנת NameError.
✗ NameError
print(square(5))
def square(n):
return n * n✓ קודם def
def square(n):
return n * n
print(square(5))משתנה שנוצר בתוך פונקציה נמחק כשהיא נגמרת. בחוץ משתמשים במה שהיא מחזירה.
✗ NameError
def total(a, b):
s = a + b
return s
total(2, 3)
print(s)✓ שומרים את ההחזרה
def total(a, b):
s = a + b
return s
answer = total(2, 3)
print(answer)בקולנוע כרטיס לילד עד גיל 12 עולה 20, ולכל השאר 35. הפונקציה ticket מחזירה את המחיר לפי הגיל. שימו לב: return מסיים את הפונקציה מיד, ולכן השורה שאחריו לא רצה.
print מציג ערך על המסך, וזהו. return מחזיר את הערך לשורה שקראה לפונקציה, ושם אפשר לשמור אותו במשתנה, לחבר אותו או לשלוח אותו לפונקציה אחרת. פונקציה בלי return מחזירה None. נסו במעבדה.
פרמטר הוא השם שבתוך ה-def, למשל width. ארגומנט הוא הערך ששולחים בקריאה, למשל 4. בכל קריאה הפרמטר מקבל את הארגומנט שנשלח באותו מקום בסדר.
כדי לא לכתוב את אותו קוד שוב ושוב. אם יש טעות, מתקנים במקום אחד. ושם טוב לפונקציה, כמו area או ticket, עוזר להבין מה התוכנית עושה. תרגלו למטה.