הסבר לגבי dict unpacking בפונקציה _generate_back_row בתרגיל שחמט לדוגמא

בפונקציה _generate_back_row בתרגיל השחמט, יוצרים dict params שעל פי הבנתי משתמשים בו בכדי ליצור instances של Rook / Knight / etc. ע"י dict unpacking - בשורה האחרונה בפונקציה [ order[i](col=i, **params) ].

מה שאני קצת לא מבין - הunpacking של המילון, היה עובד גם במידה ובמקום ‘color’ היה רשום ‘moshe’? כלומר - הדבר היחיד שמשנה בdict unpacking במקרה הזה - זה הסדר? (שצריך להתאים לסדר בו מוגדרים הפרמטרים בPiece?)

אם יש איזה חומר רקע מהשיעורים שפספסתי בנושא, אשמח אם תפנו אותי אליו (פשוט לא זוכר שראיתי dict unpacking מהסוג הזה בכדי ליצור class instance).

יצירת class instance היא בדיוק כמו קריאה רגילה לפונקציה (במובן של – זה פשוט קורא ל־__init__). אין חשיבות לסדר האיברים ב־dict unpacking (חשוב לזכור ש־dict unpacking קיימת המון שנים בפייתון, וסדר למילון נוסף לתקן רק בגרסה 3.7). מכאן שיש חשיבות לשמות.

תודה על התשובה ים!
אם כך מה שלא ברור לי - כאשר עושים dict unpacking ל params, הkeys הם strings (לדוגמא ’ color ')
לעומת זאת, כאשר הם “מגיעים” ליצירת Pawn class instance, שם מחכים vars (לדוגמא color).
פייתון עושה אוטומטית את ההמרה מstring היישר לvar המתאים?

אם אני מבלבל פה מושגים אז תגיד :slight_smile:
תודה!

הוא לא בדיוק עושה המרה, אלא פשוט ככה המכניזם של dict unpacking עובד :slight_smile:

תודה. עכשיו מצאתי את זה במחברת 4 בנושא unpacking וסגר לי סופית את הפינה.

“במקרה המיוחד מאוד של מילון, אפשר לשלוח לפונקציה את הפרמטרים בעזרת unpacking עם שתי כוכביות.
המפתחות של המילון צריכים לציין את שם הפרמטרים של הפונקציה, והערכים במילון יהיו הערך שיועבר לאותם פרמטרים”

לייק 1