עברתי על הפוסטים בפורום בעיקר אחד שפורסם לפני 3 ימים ולמרות הרמיזות שם אני לצערי לא הצלחתי להתגבר על הבעיה.
מה הבנתי:
יש צורך להשתמש ב **kwargs וגם ב *args.
כאשר אני מבצע print ל kwargs לפי הדוגמה אני מקבל שזה מילון עם הצירוף {‘name’: ‘Bug’}
אני מבין שאני צריך לבצע איזו פעולה בדומה לתרגיל מהחוברת השניה בשבוע 5 כדי שאני אוכל להפעיל את הפונקציה על הערכים אבל אני פשוט לא מצליח להבין איזו פעולה יש לעשות.
אשמח להכוונה, כמו כן אם מי שמגיב לפוסט הזה יגיב בתקרא את חוברת 2 שבוע 5, קראתי, ניסיתי לשחק עם זה לא הצליח.
תודה מראש!
aviadamar
אז כך,
העניין הוא שצריך להבין שכל אחד מהם (args* ו *kargs) מטפל בסוג שונה של משתנים שנכנסים אל הפונקציה.
ולכן בתוך הפונקציה צריך להתייחס לשניהם. כלומר יכול להיות שבמקרים מסויימים אתה תקבל ערכים מהתצורה args
ולעיתים מ **kargs
לייק 1
danihello
טוב אחרי ניסיון נוסף, זה הצליח. הבנתי את הטעות למרות שאני לא לגמרי מבין מה הולך בתוך הפונקציה.
אם משיהו הבין את הסדר של מה מושם למה בתוך הפונקציה אני אשמח לשמוע.
aviadamar
מה הכוונה לא מבין מה הולך בתוך הפונקציה ? אני אשמח לעזור אם תגיד בדיוק מה לא מתיישב לך
danihello
אני לא לגמרי מבין אילו ערכים מושמים בתוך הפונקציה של format בדוגמה בתרגיל. אני מבין שה ** מכיל מילון אבל איפה למשל “יושבת” המחרוזת?
aviadamar
כדי להבין את זה צריך להסתכל שניה על שלושת הצורות לשימוש בפוקנציה format
1.
name = 'Yam'
f"bla bla {name} bim bam"
"bla bla {} bim bam".format('Yam')
"bla bla {name} bim bam".format(name='Yam')
אני לא ארחיב על כל אחת כי ניתן לראות לפי הדוגמאות.
מה שאנו מבינים מזה שהוא שלפונקציה format יש אפוציה "להכניס משתנים לפי סדר ההופעה שלהם *args, אולם יש לה את האופציה לקבל “kargs” כלומר זוגות של נתונים, ואותם היא מצליבה עם הטקסט.
אין מדובר פה על מצב של משתנה אופציונאלי , כלומר בחתימת הפונקציה של format קיים **kargs אשר יודע לקבל את הזוגות האלה, והוא הופך אותם למילון (שזה מבנה הנתונים שיודע להתמודד עם זה"
במימוש של הפונקציה שלך הדבר הזה קורה פעמיים! למה ?
בפעם הראשונה כי אתה רוצה להעביר אל תוך הפונקציה שלך את הנתונים האלה, ואז הם עוברים כמילון.
לתוך הפונקציה שלך.
כלומר: name=‘bug’ יכניס לפונקציה שלך בצורה של {‘name’: ‘Bug’} .
לאחר מכן אתה תרצה שהפונקציה format תשתמש בו, ולכן מה שאתה צריך לעשות הוא להעביר את זה אליה.
(במידה ויש יותר ממילה אחת אתה צריך לעשות לזה unpaking כך שלפונקציה format יכנסו ערכים בודדים ) אותם היא תהפוך שוב למילון ואז תעשה את ההצלבות כמו שהסברתי מקודם.