דילוג לתוכן המרכזי
מודול 5 · שיעור 1 מתוך 417/36 בקורס~12 min
שיעורי מודול (1/4)

להגדיר ולחזור

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

תחביר בסיסי

Python
def saluta(nome):
    return f"Ciao, {nome}!"

saluta("Ada")     # 'Ciao, Ada!'
  • def מציג את הפונקציה, ואחריה השם והפרמטרים ב סוגריים.
  • ה-: פותח את הבלוק המוזח.
  • return שולח ערך בחזרה למתקשר ומסיים את הפונקציה.

return מפורש לעומת None מרומז

אם לא תכתוב return, הפונקציה מחזירה את None באופן מרומז:

Python
def stampa_e_basta(x):
    print(x)

risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato)   # None

return חשוף (ללא ערך) מחזיר גם None, אך הוא יכול לשמש כמוקדם יציאה:

Python
def primo_pari(nums):
    for n in nums:
        if n % 2 == 0:
            return n
    return None   # explicit: communicates "not found"

מספר ערכים? החזר טופלה

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

Python
def divisione_resto(a, b):
    return a // b, a % b

quoziente, resto = divisione_resto(17, 5)
# 3, 2

Docstring: תיעוד מובנה

המחרוזת הראשונה בתוך הפונקציה היא מחרוזת doc: היא מופיעה ב help(fn) וכתיאור כלי ב-IDEs.

Python
def area_cerchio(raggio):
    """Calcola l'area di un cerchio dato il raggio."""
    import math
    return math.pi * raggio ** 2

היקף: משתנים מקומיים

משתנים המוגדרים בתוך פונקציה הם מקומי: הם לא קיימים בחוץ.

Python
def f():
    x = 10
    return x

f()    # 10
x      # NameError: name 'x' is not defined

פונקציות תמיד מחזירות משהו

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

נסה את זה

פעילות גופנית#python.m5.l1.e1
ניסיונות: 0טוען...

הגדר פונקציה `double(x)` שמחזירה `x *2`. ואז קרא לזה עם 7 והקצה את התוצאה ל'תוצאה'. הערכת `תוצאה`.

טוען עורך...
הצג רמז

השתמש בהחזר x * 2.

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#python.m5.l1.e2
ניסיונות: 0טוען...

הגדר `min_max(nums)` שמחזיר tuple `(מינימום, מקסימום)`. קרא לזה '[3, 1, 4, 1, 5, 9, 2, 6]' ושחרר את התוצאה לתוך 'mn, mx'. הערך את `(mn, mx)`.

טוען עורך...
הצג רמז

החזר min(nums), max(nums)

הפתרון זמין לאחר 3 ניסיונות

אתגר נוסף

פעילות גופנית#python.m5.l1.e3
ניסיונות: 0טוען...

הגדר פונקציה \`is_palindrome(text)\` שמחזירה \`True\` אם מחרוזת הקלט שווה לגרסה ההפוכה שלה, ו-\`False\` אחרת. בדוק את הפונקציה עם \`is_palindrome("radar")\` כביטוי האחרון.

טוען עורך...
הצג רמז

השתמש בטקסט חיתוך [::-1] כדי להפוך את המחרוזת ולהשוות אותה לטקסט המקורי.

הפתרון זמין לאחר 3 ניסיונות