הרצאה זו תכלול את המודולים והחבילות ב- Python.
הם דרך לארגן את הקוד שלך בצורה של קבצים והם באמת חשובים אם אתה מתכוון לבנות יישומי אינטרנט עם Python
מודולים
מודול ב-Python הוא בעצם קובץ עם קוד פייתון כלשהו שבו אנו משתמשים כדי לארגן את הקוד שלנו לקבצים. תחשוב על זה כמו קטעים בסופרמרקט. כשאתה הולך לסופרמרקט יש קטעים שונים של פירות, ירקות, מוצרי ניקוי וכו'. אתה לא רואה סעיף אחד עם כל המוצרים.
זה אותו רעיון בתכנות. במקום לכתוב את כל הקוד שלנו עם כל הפונקציות והמחלקות ב-main.py, אנו מפרקים את הקוד שלנו למספר קבצים. כל קובץ מכונה מודול. בכך, לא רק שהקוד שלנו מאורגן ומובנה טוב יותר, אלא שיש לנו גם את היכולת לעשות שימוש חוזר בקוד שלנו. בוא נראה את זה דרך דוגמה.
נגדיר שתי פונקציות להמרת משקל מפאונד לקילוגרמים ולהיפך.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
כעת, אנו יכולים לקחת את שתי הפונקציות הללו ולהכניס אותן למודול נפרד שנקרא "ממירים", ואז ניתן לייבא אותה לכל תוכנה שצריכה את פונקציות הממיר הללו. תן לי להראות לך איך לעשות את זה.
בואו נפתח את לוח הפרויקטים שלנו ונלחץ לחיצה ימנית על הפרויקט ונוסיף קובץ חדש. אנחנו הולכים לקרוא לקובץ הזה "Converters.py".
כעת העתק את הקוד מקובץ ברירת המחדל והדבק אותו ב-"Converters.py".
עם זה, ניקינו את המודול הראשי שלנו והוא לא מפוצץ בפונקציות שונות. ככל שאנו כותבים פונקציות נוספות עם מחלקות, אנו מכניסים אותן למודולים המתאימים להן. מודול צריך להכיל את כל הפונקציות והמחלקות הקשורות. כעת, אנו רוצים לייבא את מודול הממירים למודול האפליקציה שלנו. כדי לעשות זאת, כתוב import converters
בחלק העליון ללא הסיומת ".py".
אנו יכולים לגשת לחברי מודול באמצעות אופרטור נקודה הדומה לשיטות.
בואו נמיר 70 ק"ג לפאונד:
יש גם תחביר נוסף לייבוא מודולים. במקום לייבא את המודול כולו, נוכל לייבא פונקציות ספציפיות מאותו מודול. אנחנו יכולים להקליד from Converters import
ולחץ על "control + רווח כדי להציג את רשימת הפונקציות הזמינות. עם זה, אנחנו יכולים לקרוא ישירות לפונקציה הזו.
תרגיל
הנה התרגיל שלך.
זה קשור לתרגיל מההרצאה שבה דנו "לולאות" שבו כתבנו תוכנית כדי לגלות את המספר הגדול ביותר מתוך רשימה
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
לקוד זה אין כרגע ארגון. אין לנו פונקציות או מודולים והתוכנית כתובה בקובץ בודד. זה בסדר עבור תוכניות קטנות, אבל ככל שהתוכניות שלך גדלות, אתה צריך לארגן כראוי את הקוד שלך לשיעורים ומודולים. לכן, כחלק מהתרגיל הזה, אני רוצה שתכתוב פונקציה, קרא לה find_max
. פונקציה זו צריכה לקחת רשימה ולהחזיר את המספר הגדול ביותר באותה רשימה. לאחר מכן קדימה, הכנס את הפונקציה הזו למודול נפרד, חלץ אותה מכאן והכנס אותה למודול שנקרא utils
. מודול זה צריך להכיל חבורה של פונקציות שירות. ייבא את utils
מודול לתוך המודול הנוכחי והתקשר find_max
פוּנקצִיָה. לבסוף, קבלו את התוצאה והדפיסו אותה בטרמינל.
תרגיל זה מעט מאתגר אך ניתן לביצוע בקלות.
פתרון
התחל בהגדרת פונקציה find_max
ולהוסיף פרמטר שנקרא מספרים. בתוך פונקציה זו, כתוב את האלגוריתם למציאת המספר הגדול ביותר ברשימה.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
שמור את הקוד הזה בקובץ "utils.py" כמודול.
בחזרה לתוכנית הראשית שלנו, פשוט ייבא את המודול לפי אחד משני התחבירים ופשוט הפעל את ההיגיון.
דבר אחד, אני צריך להסב את תשומת לבך אליו, הוא המעורער max
. הסיבה לכך היא max
היא פונקציה מובנית ב- Python ואנחנו מגדירים אותה מחדש. אז זו אזהרה מאת מהדר פייתון שאנחנו כבר לא יכולים להשתמש ב-max כפונקציה המובנית שלו.
מודולים מובנים ב-Python
Python מגיעה עם ספרייה סטנדרטית המכילה מספר מודולים למשימות נפוצות כמו שליחת מיילים, עבודה עם תאריך ושעה, הפקת ערכים וסיסמאות אקראיים וכן הלאה. יש כל כך הרבה מודולים שכבר מובנים ב- Python מה שאומר שכבר יש הרבה פונקציונליות שאנחנו יכולים לעשות בהן שימוש חוזר. אתה יכול למצוא את המודולים האלה כאן.
חבילות
חבילות הן בעצם דרך נוספת לארגן את הקוד שלנו על גבי המודולים. פרויקט אמיתי יכול להכיל מאות או אפילו אלפי מודולים ועם הזמן הספרייה שלנו תתנפח בכל כך הרבה קבצים. לכן, גישה טובה יותר היא לארגן מודולים קשורים בתוך חבילה, מה שהופך את החבילה למיכל למספר מודולים.
ספרייה חדשה מתווספת לפרויקט וכל המודולים הקשורים מתווספים לספרייה זו. כדוגמה, חשבו על קניון. ישנם חלקים שונים לגברים, נשים וילדים בקניון שהם כמו חבילות. לכל חלק יש אזורים שונים לסוגים שונים של מוצרים כמו נעליים, חולצות טריקו וז'קטים. תחשוב על אלה כמודולים.
בואו נראה כיצד ליצור ולהשתמש בחבילות ב- Python.
ראשית, הוסף ספרייה חדשה מלוח הפרויקט. בואו נקרא לזה "מסחר אלקטרוני". חבילה זו תכיל את כל המודולים הקשורים לאפליקציית מסחר אלקטרוני.
זו עדיין ספרייה ריקה וכדי להמיר אותה לחבילה, עלינו ליצור בה קובץ מיוחד. הוסף קובץ פיתון חדש בספרייה זו ושם לקובץ הזה "__init__". זוהי מוסכמה מיוחדת ב- Python וכאשר מתורגמן Python רואה קובץ בשם זה בספריה, הוא מתייחס לספרייה הזו כאל חבילה.
יש לנו גם שיטה חלופית ותמציתית ליצירת חבילה. פשוט לחץ לחיצה ימנית על לוח הפרויקט וצור חבילת Python מהרשימה. תן לזה "מסחר אלקטרוני" וזהו. זה יצור אוטומטית ספרייה עם קובץ Python בשם "__init__".
כעת, בואו ניצור מודול בחבילה ונקרא לו "משלוח". במודול זה, בואו ניצור פונקציה פשוטה לחישוב עלויות המשלוח.
def calc_shipping():
print("calc_shipping")
כדי לגשת לפונקציה זו במודול הראשי שלנו, עלינו לגשת אליה דרך חבילת המסחר האלקטרוני. שוב יש לנו שתי שיטות לייבא מודול זה.
בשיטה הראשונה, נוכל לייבא את כל המודול ואז לקרוא לפונקציה באופן עצמאי כך:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
עם זאת, עם גישה זו, קריאה לאחת הפונקציות למודול זה דורשת קידומת שלה eCommerce.shipping.
זה מאוד מילולי. לכן, כאשר עובדים עם חבילות אנו משתמשים לעתים קרובות בגישה השנייה ומשתמשים ב- from
הצהרה.
from eCommerce.shipping import calc_shipping
calc_shipping()
אם יש לך מספר פונקציות במודול אחד, תוכל לייבא את כולן בשורה אחת על ידי שימוש בפסיקים ביניהן. נניח שיש פונקציה נוספת לחישוב מס במודול המשלוח שלנו. זה יבוא כך:
from eCommerce.shipping import calc_shipping, calc_tax
אתה יכול גם לייבא מודולים בודדים ולהשאיר פונקציות לקריאה בשלב מאוחר יותר בתוכנית. בואו לייבא את משלוח המודול ולאחר מכן נשתמש באופרטור נקודה כדי לקרוא לפונקציה calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
לעטוף!
חבילות ומודולים חשובים ביותר ב- Python. במיוחד, כאשר אתה רוצה לעבוד עם מסגרת כמו Django המשמשת לבנייה יישומי אינטרנט עם פייתון. נבחן את ג'נגו במהלך קורס פייתון נוסף.
זו הייתה ההרצאה הקונבנציונלית האחרונה בסדרה זו. ההרצאה הבאה תחרוג מהפורמט הרגיל שלנו ונלמד כמה מקרי שימוש חשובים ב- Python. זה יסמן את הסוף של הסדרה הזו ונעבור לסדרת Python הבאה שלנו. הישאר מעודכן בשביל זה.
השאירו תגובה