תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

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

 

 

המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.

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

שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

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

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך אומרים בעברית אינטרנט?

 

תמונת המגיב

יעל בתאריך: 17.03.2024

ההסבר פשוט וברור
אין עליךךךךךךךך