הפקולטה לפיזיקה, הטכניון. חורף 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()
in test function
תוכן הפונקציה מוזח פנימה, לציין שמדובר בבלוק חדש.
מתבצעת באמצעות 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)
6
אם מספר הפרמטרים המועברים לפונקציה שונה ממספר הפרמטרים ההכרחיים, תתרחש שגיאה,
double_it()
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-3-51cdedbb81b0> in <module>() ----> 1 double_it() TypeError: double_it() takes exactly 1 argument (0 given)
ניתן להגדיר פרמטרים אופציונאלים, ולהם ערך ברירת מחדל. פרמטרים כאלו לא חייבים להעביר לפונקציה.
def double_it(x=2):
return x*2
double_it()
4
double_it(3)
6
פרמטרים אופציונאליים חייבים לבוא אחרונים (אלא אם כן קוראים בשמם)
def location(t, x0=0, v0=0, a=9.8):
return x0 + v0*t + (a*t**2)/2
location(5)
122.50000000000001
location(5, 0,0, 42)
525
ניתן להעביר פרמטרים גם לפי שמם: הפרמטרים הראשונים חייבים לבוא לפי הסדר, ולאחר מכן, בכל סדר שהוא:
a = 10
location(5, a=a)
125
location(5, a=42, x0=-1)
524
למשתנים המוגדרים מחוץ לפונקציה, ניתן להתייחס בתוך הפונקציה:
x = 5
def addx(y):
return x+y
addx(10)
15
אבל משתנים כאלו, לא ניתן לשנות בתוך הפונקציה, אלא אם כן מחריזים עליהם כגלובלים.
הדוגמה הבאה אינה עובדת:
x=5
def setx(y):
x = y
print "x is now %d" % x
setx(10)
print x
x is now 10 5
אם נשתמש במילה השמורה global...
x=5
def setx(y):
global x
x = y
print "x is now %d, for real" % x
setx(10)
print x
x is now 10, for real 10
קצרה היריעה לתאר את כל המאפיינים של פונקציות בפייתון. הנה כמה דברים שלא נדבר עליהם:
ניתן לבצע את התרגילים הן במפענח והן בקובץ נפרד
ניתן לכתוב פונקציות עזר. מומלץ להשתמש בלולאה.