פייתון/פייתון גרסה 2/מודולים

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

חלוקת הקוד למודולים (קבצי קוד) מסייעת לתחזוקתו ומייעלת את בנייתו לתוכנית.

בדומה לשפת C, שם כותבים פקודת #include, בפייתון כותבים import.

עם זאת, בעוד ש-import פייתוני דומה מעט ל-include של C, הוא הרבה יותר מורכב ממנו. include של c מהווה פעולה טקסטואלית (שמבצע הקדם מהדר) - החלפת טקסט אחד בטקסט שני. import פייתוני למעשה ממש מריץ קוד, מעדכן namespaces, ועוד.


שקלו לדלג על נושא זה

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



הצורך במודולים[עריכה]

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

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

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

ייבוא מודולים[עריכה]

לצורך הדגמה, נתבונן במספר דרכים להשתמש בפונקצית סינוס (sin). פונקצית סינוס נמצאת בתוך ספריה בשם math. פקודת היבוא הפשוטה ביותר כי כזו:

import math
math.sin(30*3.14/180)
(התשובה שתתקבל: 0.4997701026431024)

כלומר, פקודת import בתוספת שם המודול מבצעת ייבוא "גלובלי", כך שעלינו לומר לפייתון מפורשות שעליו לחפש את הפונקציה sin בתוך מודול math.

נתבונן כעת ביבוא לוקלי:

from math import *
sin(30*3.14/180)

כלומר, פקודת import * מייבאת באופן לוקלי את כל הפקודות שבספרית math.

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

from math import sin
sin(30*3.14/180)

כלומר, מתבצע ייבוא לוקלי של פונקציה בודדת.

כנו כן ניתן לייבא פונקציה תחת שם אחר:

from math import sin as sinus
sinus(30*3.14/180)

על מנת לראות את כל הפקודות של מודול מסוים, יש להשתמש בפקודה dir:

>>> import cmath
>>> for func in dir(cmath):
...     print func
... 
__doc__
__file__
__name__
acos
acosh
asin
asinh
atan
atanh
cos
cosh
e
exp
log
log10
pi
sin
sinh
sqrt
tan
tanh

ראו גם[עריכה]


- מודולים -