פייתון/מודולים
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
חלוקת הקוד למודולים (קבצי קוד) מסייעת לתחזוקתו ומייעלת את בנייתו לתוכנית.
בדומה לשפת 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
[עריכה] ראו גם
- גישה וקטורית למערכים באמצעות NumPy
- אנליזה נומרית עם SciPy
- ספרית הגרפיקה Matplotlib
- המודול os
- המודול sys
| הפרק הקודם: חריגים |
מודולים | הפרק הבא: קבצי אצווה |