ישנם שלושה סוגים של ארגומנטים שפונקציית Python יכולה לקבל: סטנדרטי, משתנה (*args) ומילת מפתח (**kwargs). ארגומנטים סטנדרטיים הם הפשוטים ביותר אך בעלי פונקציונליות מוגבלת. מצד שני, *args ו-**kwargs מאפשרים לך להפוך את הפונקציות שלך לגמישות יותר, על ידי קבלת מספר משתנה של כניסות.
סוג העברת הארגומנטים שתבחר תלוי באופי הפונקציה שלך ובסגנון התכנות המועדף עליך.
פונקציות בסיסיות ב- Python
כדי להבין כיצד פועלים שני הארגומנטים המשתנים בפונקציות Python, חיוני להבין מדוע הם קיימים מלכתחילה. פונקציה פשוטה מצהירה על מספר קבוע של ארגומנטים אנונימיים כך:
defתוספת(א ב ג):
לַחֲזוֹר a + b + c
הפונקציה הזו עובדת מצוין, אבל יש מקום לשיפור. הבעיה הגדולה ביותר היא שהוא מטפל רק בשני ארגומנטים, כך שהוא יכול לחבר רק שני מספרים. מה אם אתה רוצה להוסיף שניים או ארבעה מספרים? פונקציה זו לא תאפשר לך לעשות זאת. העברת יותר או פחות ארגומנטים ממה שהפונקציה מקבלת יוביל ל- TypeError.
כמובן, אתה יכול ליצור פונקציות נוספות כדי לקבל מספר שונה של ארגומנטים. אבל זה לא נוח ולא ישתלם טוב בכלל. תצטרך גם ליצור פונקציה חדשה בכל פעם שתרצה לטפל במספר חדש של כניסות.
זה המקום שבו ארגומנטים משתנים וארגומנטים של מילות מפתח נכנסים לתמונה. באמצעות *args ו-**kwargs, ניתן להגדיר פונקציות גמישות שיכולות לקחת מספר משתנה של כניסות.
מה זה *args ב-Python?
הרעיון המרכזי מאחורי *args ב-Python הוא לאפשר לך להעביר מספר משתנה של כניסות לפונקציה שלך. זה שימושי ביישומים שונים. לדוגמה, חשבו על תוכנת מחשבון שבה ברצונכם לתת למשתמש את היכולת להוסיף שני מספרים או יותר ולהחזיר את הסכום.
שימו לב כי args הוא רק שם משתנה; זה ה* שחשוב. אתה יכול להשתמש בכל שם חוקי עבור ארגומנט המשתנה שלך, כל עוד אתה כולל את ה-*.
כיצד להשתמש ב-*args
אתה יכול לשנות את פונקציית התוספת כך שתיקח מספר משתנה של כניסות באופן הבא:
defתוספת(*ארגס):
סך הכל = 0ל מספר ב args:
סה"כ = סה"כ + מספר
לַחֲזוֹר סך הכל
קטע הקוד למעלה משתמש בלולאת for לחזור דרך הכניסות שסופקו.
לאחר מכן תוכל לקרוא לפונקציה addnum עם ארגומנטים משתנים והיא תעבוד מבלי לזרוק שגיאה:
הדפס(adnum(10, 1, 12, 12, 4, 54, 5)) ## מחזיר 98
הדפס(adnum(14, 54, 5)) # מחזיר 73
הדפס(adnum(10, 5)) # מחזיר 15
מה זה **kwargs ב-Python?
בעוד שגם *args וגם **kwargs מאפשרים לנו להעביר מספר משתנה של כניסות לפונקציות, האחרון הוא ספציפי לארגומנטים של מילות מפתח. למקרה שאתה לא יודע, ארגומנטים של מילות מפתח הם רק שמות מפוארים לארגומנטים עם שם.
דבר ייחודי נוסף ב-**kwargs הוא ש-Python מייצג את הערך כמילון.
כיצד להשתמש ב-**kwargs
כמו *args, הכוכבית הכפולה היא החלק החשוב; אתה יכול להשתמש בכל מילה כשם פרמטר. הנה דוגמה לשימוש ב-**kwargs ב-Python:
defנוכחות_שבועית(**ימי חול):
סך_משתתפים = 0למשתתפיםבימי חול.ערכים():
total_attendees = total_attendees + attendeesלַחֲזוֹר סך_משתתפים
הדפס(נוכחות_שבועית (יום שני = 265, יום שלישי = 698, יום רביעי = 365, חמישי = 463, שישי = 234)) # מחזיר 2025
הדפס(נוכחות_שבועית (יום שני = 265, שישי = 234)) # מחזיר 499
הדפס(נוכחות_שבועית (יום רביעי = 365, חמישי = 463, שישי = 234)) # מחזיר 1062
גם קטע הקוד שלמעלה משתמש בלולאת for, אבל הפעם עם השיטה המובנית של ערכים() של Python. שיטה זו מחזירה אובייקט תצוגה של כל הערכים במילון. השיטה values() מאפשרת לך לולאה דרך מילון Python ללא טרחה.
השתמש בארגומנטים משתנים כדי להפוך את פונקציות הפייתון שלך לגמישות
ארגומנטים של פונקציה שימושיים, אך פונקציות מסוימות יכולות להפיק תועלת מקבלת מספר משתנה של ארגומנטים. ארגומנטים בעלי שם של מילת מפתח יכולים להפוך את הקוד שלך לקריא יותר וקל יותר לשימוש. כדאי לאמץ את טיעוני *args ו-**kwargs של Python. הם די פשוטים לשימוש, ובאמצעותם אתה יכול להפוך את הפונקציות והתוכניות שלך לגמישים יותר.
על ידי ביצוע השלבים וקטעי הקוד שלמעלה, אנו מקווים שתוכל להשתמש כעת בארגומנטים של מילות מפתח משתנות וארגומנטים שאינם מילות מפתח עבור הפונקציות שלך.