args ו-kwargs בפייתון מוסברים בשפה פשוטה
אחרי שקצת השתמשת בספריות של פייתון ודאי נתקלת בשני ארגומנטים שניתן להעביר לפונקציות ששמם *args ו-**kwargs. במדריך זה נסביר מהם.
הארגומנט *args (קיצור של arguments) מאפשר להעביר מספר משתנה של פרמטרים לפונקציה.
נגדיר את הפונקציה:
# args enables a function to receive any number of positional arguments
def foo(*args):
print(args)
נעביר לפונקציה 3 פרמטרים:
foo(1,2,3)
והתוצאה:
(1, 2, 3)
הכוכבית עושה מהמשתנים שמועברים ל-*args טאפלים - רשימות שלא ניתן לשנות.
הארגומנט **kwargs (קיצור של keyword arguments) מאפשר להעביר מספר משתנה של פרמטרים בעלי שם לפונקציה:
# args enables a function to receive any number of keyword based arguments
def bar(**kwargs):
print(kwargs)
bar(name='moshe', age=27)
והתוצאה:
{'name': 'moshe', 'age': 27}
שתי הכוכביות עושות מהמשתנים שמועברים לארגומנט **kwargs מילון (dictionary).
אפשר להשתמש ב-**args ו-**kwargs ביחד באותה הפונקציה:
def baz(*args, **kwargs):
print(args)
print(kwargs)
ניתן לשלב אותם עם משתנים רגילים.
def student_info(req1, req2, *args, **kwargs):
print(req1)
print(req2)
print(args)
print(kwargs)
student_info('Python', 'SQL', 'quick learner', 'a player', name='moshe', age=27)
Python SQL ('quick learner', 'a player') {'name': 'moshe', 'age': 27}
כשמשלבים הסדר חשוב: קודם הארגומנטים הרגילים, אחריהם בתור הארגומנטים של args** ורק בסוף הארגומנטים של kwargs**.
ניתן להשתמש בכוכבית לפני שם המשתנה כדי להתיר רשימה ולהעביר את האלמנטים שלה כמשתנים בדידים לפונקציה:
def student_info(lang1, lang2, lang3):
print(lang1)
print(lang2)
print(lang3)
args = ['python', 'sql', 'javascript']
student_info(*args)
הכוכבית הופכת את הרשימה למשתנים בדידים ואותם אנו מזינים לפונקציה.
שמות המשתנים args ו-kwargs אינם הכרחיים, וניתן להחליף אותם בשמות אחרים, כל עוד מקפידים על שימוש בכוכביות לפני שם המשתנה.
def student_info(full_name, *langs, **bio):
print(full_name)
print(langs)
print(bio)
student_info('moshe', 'python', 'sql', profession='programmer', age=27)
חשוב! השימוש ב-**args ו-**kwargs הוא המקובל יותר לכן כדי לשמור על הקוד שאתם כותבים קריא לעצמכם ולאחרים כדאי להקפיד על שימוש במוסכמות שכולם מכירים.
ניתן להשתמש בכוכבית גם מחוץ לפונקציה כדי להתיר רשימה ולהפוך את האלמנטים שלה למשתנים בדידים.
# Use the asterisk to unwrap a list
langs = ['python', 'sql', 'javascript']
print(*langs)
לכל המדריכים בסדרה ללימוד פייתון
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים