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 כוכבים

 

 

הוסף תגובה חדשה

 

= 9 + 3