הפקולטה לפיזיקה, הטכניון. חורף 2013
מרצה: רונן אברבנאל
פונקציות הן קטעי קוד הנכתבים פעם אחת, ומבצעים סדרה של פעולות בכל פעם שהן נקראות. שימוש טוב בפונקציות מאפשר לכתוב קוד קריא יותר, ובקלות רבה יותר.
פונקציות ב-C:
float location(int time, float x0, float v0, float a)
{
return x0 + v0*t + a*a*t/2;
}
בפייתון, כמו בפייתון, אין צורך להצהיר על טיפוסי פרמטרים ועל ערך החזרה.
def test():
print "in test function"
test()
תוכן הפונקציה מוזח פנימה, לציין שמדובר בבלוק חדש.
מתבצעת באמצעות return. אין צורך להצהיר על טיפוס הנתונים המוחזר.
def disk_area(radius):
return 3.14 * radius * radius
disk_area(1.5)
def disk_area(radius):
return 3.14 * radius * radius
** הגדרת פונקציה מורכבת ממספר חלקים **
פרמטרים הכרחיים מועברים לפונקציה לפי הסדר
def double_it(x):
return x*2
double_it(3)
אם מספר הפרמטרים המועברים לפונקציה שונה ממספר הפרמטרים ההכרחיים, תתרחש שגיאה,
double_it()
ניתן להגדיר פרמטרים אופציונאלים, ולהם ערך ברירת מחדל. פרמטרים כאלו לא חייבים להעביר לפונקציה.
def double_it(x=2):
return x*2
double_it()
double_it(3)
פרמטרים אופציונאליים חייבים לבוא אחרונים (אלא אם כן קוראים בשמם)
def location(t, x0=0, v0=0, a=9.8):
return x0 + v0*t + (a*t**2)/2
location(5)
location(5, 0,0, 42)
ניתן להעביר פרמטרים גם לפי שמם: הפרמטרים הראשונים חייבים לבוא לפי הסדר, ולאחר מכן, בכל סדר שהוא:
a = 10
location(5, a=a)
location(5, a=42, x0=-1)
למשתנים המוגדרים מחוץ לפונקציה, ניתן להתייחס בתוך הפונקציה:
x = 5
def addx(y):
return x+y
addx(10)
אבל משתנים כאלו, לא ניתן לשנות בתוך הפונקציה, אלא אם כן מחריזים עליהם כגלובלים.
הדוגמה הבאה אינה עובדת:
x=5
def setx(y):
x = y
print "x is now %d" % x
setx(10)
print x
אם נשתמש במילה השמורה global...
x=5
def setx(y):
global x
x = y
print "x is now %d, for real" % x
setx(10)
print x
קצרה היריעה לתאר את כל המאפיינים של פונקציות בפייתון. הנה כמה דברים שלא נדבר עליהם:
ניתן לבצע את התרגילים הן במפענח והן בקובץ נפרד
ניתן לכתוב פונקציות עזר. מומלץ להשתמש בלולאה.