פרק קודם:
פייתון 13 - שגיאותמה נלמד
- מה מגדיר מודול
- מה ניתן לייבא ממודול
- משתני מערכת בפייתון
- המשתנה name
מודולים - Modules
למדנו שניתן להריץ קוד בתוך קובץ, הקבצים האלו בעלי הסיומת “.py”.
קבצי פייתון יכולים להכיל הצהרות של פונקציות.
הקובץ הזה הוא בעצם מודול.
למשל:
shapeMath.py
1 | def RectangleArea(a,b): |
main.py
1 | import shapeMath |
ב-shapeMath אנחנו מגדירים פונקציה שמחשבת שטח של מלבן.
לאחר מכן בקובץ שאנחנו נריץ אנחנו מייבאים אותו בעזרת המילה import.
המודול הזה נותן לנו את הפונקציה המתאימה לחישוב שטח של מלבן ולכן ניתן להשתמש בפונקציה.
ניתן לראות את זה כשיחה בין שני מודולים.
מכיוון שאנחנו שומרים על עקרון האחריות היחידה אנחנו מפצלים את האחריות של החישובים למודול אחר.
עקרון האחריות היחידה היא חלק מעקרונות SOLID.
העקרון מצביע על מצב של קוד שכל קטע קוד אחראי על תחום אחד בלבד.
כמו שראינו את השימוש בקבצים ניתן לפצל את השמירה לקובץ מתוך קריאת מידע מרשימה.
היתרונות שזה נותן לנו:
- תיקון קל יותר של קוד.
- קריאה קלה יותר של קוד.
- זיהוי באגים מהר יותר.
- קל יותר לדבג (לזהות באגים)
- קל יותר לבנות ולשנות
- תומך בהרבה תבניות
המודול הראשי שואל: “מי יכול לחשב לי את השטח של המלבן?”
המודול השני עונה “לי יש פונקציית חישוב”
המודול הראשי מייבא ומשתמש בפונקציות.
ייבוא חלקי
ניתן לייבא הצהרות ממודול כשלא צריך את כל המודול.
למשל במקרה שמודול הוא גדול ואנחנו לא צריכים את כולו.
1 | from shapeMath import RectangleArea |
אנחנו מייבאים את השם הספציפי שאנחנו משתמשים בו, שימו לב שהשינוי המהותי הוא שאנחנו לא צריכים להגיד מאיפה הפונקציה.
בלי:
1 | import shapeMath |
עם:
1 | from shapeMath import RectangleArea |
שימוש נכון במודולים
לפייתון יש משתני מערכת - משתנים עם שמות מיוחדים שנותנים לנו יכולת לבדוק ולהדפיס מידע.
המשתנים האלו בעלי שני קווים תחתוניים __ מכל צד.
המשתנה name
1 | if __name__ == "__main__": |
כשמריצים את הקובץ הראשי:
1 | PS C:\a> python main.py |
כשמריצים את הקובץ המשני:
1 | PS C:\a> python shapeMath.py |
המשתנה הזה בעצם אומר איזה קובץ רץ ואם הקובץ הראשי רץ הוא מקבל את השם
1 | __main__ |
כשיש לנו סקריפט שיכול לרוץ או להיות משומש כמודול - ניתן לבדוק בעזרת המשתנה הזה איזה קובץ רץ.
תרגיל
חשבו על מודולים שניתן לבנות בתכנות כדי לעזור בכל מיני פעולות.
בעצם תחשבו על איגודים לוגיים של פעולות, למשל הדוגמא הכי קלאסית היא פונקציות מתמטמיות.
אילו עוד פעולות אתם יכולים לחשוב עליהם?להלן רשימה של פוקנציות, תאגדו אותם למודולים ותנו שם למודולים האלו:
- CalcArea
- CalcAngle
- GetMouse
- SaveFile
- LoadFile
- GetKeyboard
- RectangleIntersects
- טיפול ברשת
- טיפול בקבצים
- פורמט JSON
- פורמט XML
- פורמט PDF
- טיפול בחלון גראפי
- טיפול במקלדת
- אימייל
- מערכת הפעלה
יש הרבה מאוד דוגמאות - פשוט תחשבו על האופי המשותף של חלק מהדברים למשל קבצים ותיקיות זה בדרך כלל בא יד ביד.
Shapes:
- CalcArea
- CalcAngle
- RectangleIntersects
Input:
- GetMouse
- GetKeyboard
Files:
- SaveFile
- LoadFile
זהו תרגיל די פשוט אבל בכוונה עשיתי אותו ככה כדי שיהיה לכם את הידע הראשוני לזהות מה “זהה” ומה “שונה”.
זהו עקרון מאוד חשוב בתחום עיצוב התוכנה:
תזהה מה שונה ומה דומה ותאגד אותם בהתאם.
בפרק הבא נלמד על תבניות רגקס - חיפוש בתוך טקסט.
פייתון 15 - רגקסים