קורס פיתוח מתקדם בפייתון
פרק
>
רמה
פונקציות מתקדמות
פונקציות חלקיות
מטרה
ארוז והנח חומרים לבנייה שהובאו לדוק באמצעות שימוש בפונקציות חלקיות.
כמה אספקה הובאהם זה עתה לדוק, ויש לארוז ולאחסן אותם כך שיוכלו לשמש כחומרי בנייה. יש לעטוף את החומרים בבד ולקשור אותם בחוט. חשוב לשקול את כל הפריטים בעת האריזה כדי שיוכלו להיות מועברים ביעילות מאוחר יותר. כדי להקל על כך, נוכל למטב תהליך זה על ידי שימוש בפונקציות חלקיות.
פונקציה חלקית היא פונקציה מותאמת אישית שקוצרה בכך שאין צורך להוסיף ערכי ארגומנטים שהם בעיקר קבועים. הדבר מאפשר לך להשתמש בפונקציות המקבלות מספר ארגומנטים ולהריץ אותן עם ארגומנט בודד בלבד או עם כל מספר שתבחר.
from functools import partial
להתחיל, עליך לייבא את partial מהמודול הידוע כ-functools, דבר זה יאפשר לך ליצור פונקציות חלקיות. קוד ייבוא תמיד ממוקם בתחילת עורך הקוד.
הגדר פונקציה בשם weight והגדר לה לקבל שלושה (3) ארגומנטים: thread, cloth ו-material. פונקציה זו תאפשר לך לחשב את משקל החומרים הארוזים, ואנו יכולים למטב תהליך זה עוד יותר על ידי העברתו דרך פונקציה חלקית.
def weight(thread, cloth, material):
return 2 * thread + 5 * cloth + material * 10
package = partial(weight, 4, 2)
צור פונקציה חלקית בשם package, שהיא מוגדרת בתהליך דומה לפונקציות למבדה. השתמש ב-partial() כדי למלא את הפונקציה ולהוסיף את שם הפונקציה וכן ערכים קבועים לארגומנטים שברצונך להקצות.
כל ארגומנטים מהפונקציה המקורית שלא תציין יהפכו לארגומנטים שעליהם יש לספק ערכים על ידי הפונקציה החלקית. במקרה של הפונקציה package(), מדובר בארגומנט material.
לך לאותיות X הכהות שמול הקופסאות כדי לאסוף חומרים לאריזה. על אות X על השטיח הצהוב, השתמש בפונקציה collect() כדי להשיג את "thread", ולך לאות X על השטיח הסגול והשתמש בפונקציה collect() כדי להשיג את "cloth". פריטים אלו ישמשו לאריזת החומרים.
עבור על הדוק ואסוף את כל חומרי הבנייה, אלו: bricks, planks, red_bricks ו-wood. לאחר שתאסוף אותם, הוסף את מספר הפריטים שאספת מכל אחד למשתנה ששמו זהה לחומר, לדוגמה: bricks = 3.
לאחר מכן עבור לאותיות X הבהירות שמול הקופסאות וחישב את משקל כל חומר בנייה לפני האחסון. השתמש בפונקציה speak() בשילוב עם הפונקציה החלקית package() כדי לחשב את המשקל. העבר את משתני החומרים כארגומנטים לפונקציה package(), לדוגמה:
player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))
סיים בכך שתשתמש בפונקציה place() לאחסון החומר בתוך הקופסאות, עשה זאת גם באמצעות פונקצית package(), כפי שמתואר בדוגמה למעלה.
על אות X הבהירה עם השטיח red שקול ואחסן את bricks. על אות X הבהירה עם השטיח blue שקול ואחסן את planks. על אות X הבהירה עם השטיח orange שקול ואחסן את red_bricks. על אות X הבהירה עם השטיח green שקול ואחסן את wood. אחסן ושקול את כל ארבע (4) החומרים בקופסאות הנכונות בכדי להשלים את השלב.