3.5 מודולים הרצאה
מודולים בפייתון¶
- מה הם מודולים בפייתון?
- מודולים הם קבצי פייתון, בפייתון אנחנו יכולים לחלק את הקוד שלנו לקבצים שונים (מודולים שונים).
יצירת מודול¶
- צרו קובץ פייתון למשל -
module.py - הגדירו פונקציות או משתנים בקובץ כמו בדוגמה הבאה:
שימוש במודול:¶
- כדי להשתמש במודול החדש שיצרנו במודול אחר למשל ב
main.pyאנחנו נשתמש בimport
# Main.py
import module
module.greet("Alice") # Output: Hello, Alice!
result = module.square(5)
print(result) # Output: 25
print(module.number) # Output: 3
- באמצעות
import module יבאנו משתנה בשם module שמכיל את כל הפונקציות והמשתנים מהמודול module.py.
- אפשר לציין בimport בדיוק איזה משתנים/פונקציות אנחנו רוצים לייבא לקוד שלנו
# Main.py
from module import greet, number
greet("Alice") # Output: Hello, Alice!
square(5) # will raise an error
print(number) # Output: 3
- באמצעות
from module import greet, number ייבאנו רק את המשתנה number והפונקציה greet לקוד שלנו.
חבילה - Package¶
מה היא חבילה?¶
- חבילה היא שם אחר לתקייה, בה אפשר לשמור מודולים שונים.
- סידור הפרויקט שלנו לחבילות שונות, שבכל חבילה של מודולים שונים יכול לעזור לנו לארגן את הקוד.
- בתוך כל חבילה צריץ להיות מודול שנקרא
__init__במודול הזה מוגדר קוד שירוץ אוטמטית כל פעם שמישהו עושה import לחבילה, הנה דוגמה לחבילה:
שימוש בחבילה¶
- אפשר להשתמש ב
importכדי לייבא מודולים מחבילות
- אפשר גם לעשות
importבצורה הבאה:
- נניח הפרויקט שלנו היה נראה ככה:
- היינו יכולים גם לעשות ככה:
- וכדי להימנע מנתיבים ארוכים כמו למעלה, נוכל גם לעשות נתיבים קצרים יותר ככה:
- זה עובד בגלל שמודול 1 נמצא באותה תקייה עם החבילה שמכילה את מודול 2.
תלות מעגלית - Circular dependency¶
- תלות מעגלות קורת כאשר שני מודולים עושים import אחד לשני.
module_a.py¶
module_b.py¶
- כדי לפתור את הבעיה צריך פשוט לארגן מחדש את הקוד, מצב שבהם שני מודולים עושים import אחד לשני הוא אף פעם לא הגיוני, ואם הגענו למצב כזה כנראה הקוד שלנו פשוט לא מאורגן בצורה הגיונית.
טיפים אחרונים¶
- תשמרו על המודולים שלכם קטנים וממוקדים למטרה אחת פשוטה.
- השתמשו בשמות אינטקטיבים למודולים ולחבילות
-
תתעדו את המודולים שלכם עם doc-string - זה אפשרי:
-
שימוש במודולים הוא הכרחי כדי לארגן אתה קוד שלנו, השתמשו בהגיון כשאתם מחלקים את הקוד למודולים.
- מודול לא אמור להכיל רק פונקציה אחת, אלה כמה - אבל מצד שני מודול לא אמור להיות ארוך מקסימום 100 שורות. תנסו לדאוג שכל מודול יהיה עד 50 שורות קוד.
- בנוסף בדרך כלל נהוג שבמודול main יהיה את הפונקציית main ורק אותה. וזה אמור להיות המודול היחידי שיש בו בדרך כלל רק פונקציה אחת.
- שימו לב שכשאתם עושים import, תעשו תמיד from. תמיד תעשו import רק לפונקציות שאתם משתמשים בהם, למשל כמו בדוגמה הבאה: