היי,
לקראת סוף מחברת 2 בשבוע 5 ישנן דוגמאות נוספות, אשמח אם מישהו יוכל להסביר לי את הדוגמא הראשונה:
הפונקציה range כזכור יכולה לקבל שני פרמטרים התחלה וסוף אולם יכולה לקבל גם ארגומנט שלישי.
אשר מתאר “קפיצות”.
הפרמטר הזה בדיפולט שלו הוא 1 (כלומר ללא קפיצות בין האיברים - בהנחה ולא הכנסו ארגומנט שלישי).
ברגע שעשו פה unpacking של הרשימה לתוך הפונקציה זה שווה ערך ללהכניס אליה 3 משתנים
range(1,10,3)
ואז בעצם מקבלים מצב בו אנו אומרים לפונקציה לעבור בין 1 ל 10 בקפיצות של 3, ולכן התוצאה המתקבלת היא
1,4,7
באותו נושא, אחת הדוגמאות שם היא חיקוי של הפונקציה get:
למה צריך את **kwargs
? הפונקציה עובדת כמו get גם אם מוחקים את הפרמטר הזה.
ניסיתי לשחק עם זה ובכל הרצה הפרמטר kwargs לא לוקח אף ארגומנטים, הם כולם “נכנסים” תחת *args
.
ספציפית עבור המקרה הזה זה נכון, get לא מקבלת keyword arguments, אבל צריך להתחשב במקרה שבו בעתיד היא כן תוכל לקבל פרמטרים דיפולטיים/keyword arguments.
להוסיף *args, **kwargs
לחתימות של פונקציות שמחקות פונקציות אחרות זה די נפוץ, כדי לתפוס את כל מקרי הקצה וההרחבות העתידיות שהולכות להיות לפונקציות שמחקים