קורס פיתוח מתקדם בפייתון
פרק
>
רמה
מודולי מתמטיקה
התבוננות בקוד
מטרה
בדוק כמה פריטים ישנים ששמורים בעלייה באמצעות אינטרוספקציה של הקוד כדי לגלות מה הם ואיך משתמשים בהם.
בעלייה יש משרד שמשמש לעיתים רחוקות ויש כמה תיבות ישנות המכילות ערכים יקרים שכבר נשכחו מזמן. אלא אם כן נמסר אחרת או עדכון נותן את המידע, לפעמים קשה לזהות פריטים, או קבועים שנאספים בשטח. לא רק זאת, יכול להיות קשה לזהות את הטווח של הדברים שניתן לבצע עם אובייקט מסוים או מהם התכונות שלו. כדי להתגבר על כך, נשתמש באינטרוספקציה של הקוד.
אינטרוספקציה של הקוד מאפשרת לנו לבדוק ולזהות קטעי קוד מסוימים ולהצביע על כמה מתכונותיו. לשם כך נשתמש בארבע (4) פונקציות אינטרוספקציה מובנות שמגיעות עם קוד הבסיס של פייתון: type() , id() , repr() , dir() ו-help(). הן פועלות כדלקמן:
type(): הפונקציה מיידעת אותך באיזה סוג אובייקט נמצא הפרמטר שהועבר. לדוגמה, אם תעביר משתנה כארגומנט, הפונקציה תזהה את האובייקט כמשתנה.id(): לכל אובייקט שיוצר בפייתון יש מזהה ייחודי המזהה את האובייקט בתוך הקוד. על ידי העברת אובייקט כארגומנט לפונקציה זו, היא תחזיר את המזהה הייחודי של האובייקט.repr(): ממירה ערך שאינו מחרוזת למחרוזת, שימושית להמרת נתונים לצורה קריאה.dir(): מציגה את כל התכונות שהפונקציה מחזיקה, שימושית לדעת מה ניתן להשיג עם סוג אובייקט מסוים.help(): מציגה את כל המידע אודות אובייקט, פונקציה, מחלקה וכו', הזמין ברישום של פייתון.
בנוסף, יש לנו פונקציה אסינכרונית חדשה בשם display(). פונקציה זו דומה לפונקציה read() אך מאפשרת להציג נתונים דינמיים, בדומה לפונקציות האינטרוספקציה שמייצרות נתונים דינמיים. התחביר שלה הוא: await player.display( -data-). כל הפונקציות האלו יהיו שימושיות לניתוח נתונים, דבר שחשוב כאשר אנחנו משתמשים בשיטות ומתחילים לייבא פונקציות חדשות וכן לניתוח כל קוד ממנו נרצה לזהות תכונות.
נשתמש בפונקציות אלו על מנת לזהות ולקטלג את הפריטים המאוחסנים בעלייה. כדי להתחיל, לך לסימן X כהה שמסומן על פני השטיחים הצבעוניים, החל מהשטיח האדום. ישנם שלושה (3) קבועים באזור זה: red_container , green_container , ו-blue_container , קבועים אלו מייצגים מכולות בכל תיבה התואמות לכל שטיח צבעוני.
לכל סימן X, פנה אל התיבה והשתמש בפונקציה open() לפתיחת התיבות, השתמש בפונקציה collect() עם הקבוע המתאים לשטיח הצבעוני כדי לאסוף אותו מתוך התיבה. השתמש בפונקציית האינטרוספקציה type() כדי לזהות איזה סוג קבוע נמצא בתיבה, הפלט שהיא מפיקה הוא נתונים גולמיים ועבור כך נשתמש בפונקציה repr() כדי להמיר אותו למחרוזת. השתמש בפונקציה speak() כדי להציג את המחרוזת המתקבלת משילוב הפונקציות והקבוע, לדוגמה: player.speak(repr(type(red_container))). המשך עם פונקציית speak() עם הקבוע כדי לזהות את התכולה ישירות, לדוגמה: player.speak(red_container).
לאחר שכל שלושת (3) הקבועים נאספו, נבדקו וזוהו, לך לסימן X בהיר שממוקם מול השולחן. צור שלושה משתנים בשם: item_id_red , item_id_green , item_id_blue , שישמשו לאחסון מספרי זיהוי לכל אחד מהקבועים שאספת. השתמש בפונקציית האינטרוספקציה id() כדי לקבל את מספר הזיהוי הייחודי של הקבוע על ידי העברתו כארגומנט. התאם את שם המשתנה עם שם הקבוע באמצעות הפורמט לדוגמה: item_id_red = id(red_container) , עשה זאת עבור כל שלושת (3) המשתנים והקבועים.
לאחר שכל שלושת (3) המשתנים מולאו, אחסן את כולם ברשימה בשם item_list ובסימן X בהיר השתמש בפונקציה display() כדי לוודא שזה נרשם בהערת השולחן, כך: await player.display(item_list).
כעת, לאחר שהרשימה נרשמה, לך לסימן X כהה שמעל שטיח סגול ופנה אל השולחן. כאן נשתמש בפונקציה dir() כדי לזהות אילו תכונות יש לרשימה, אך הפלט הוא נתונים גולמיים שעשויים להיות קשים להצגה. עבור כך נשתמש בפונקציה repr() כדי להמיר את הנתונים למחרוזת קריאה. צור משתנה בשם item_attributes ואחסן את המחרוזת המתקבלת, כך: item_attributes = repr(dir(item_list)). לבסוף, השתמש בפונקציה display() כדי לוודא שזה נרשם בהערת השולחן.
לך לסימן X כהה שמעל שטיח לבן כדי לבצע את אותו הדבר שעשית עם dir() אך באמצעות help(), מה שיציג את כל תיעוד השימוש באובייקט. צור משתנה בשם item_help ואחסן את המחרוזת המתקבלת, כך: item_help = repr(help(item_list)). לבסוף, השתמש בפונקציה read() כדי לוודא שגם זה נרשם בהערת השולחן, וכך השלמת את הרמה.