6.2 ארגומנטים לתוכנה הרצאה
ארגומנטים לתוכנה - program arguments¶
-
ממש כמו פונקציות גם תוכנות יכולות לקבל ארגומנטים, דמיינו שממש כשאנחנו מריצים את התוכנה שלנו -
python main.pyאנחנו יכולים להביא פרמטרים לתוכנה כשאנחנו מריצים אותה.
דוגמה: בטרמינל כשאנחנו מריצים קוד פייתון, אפשר להביא ארגומנטים בצורה הבאה:
python main.py argument1=2
python main.py dadasdqweewq
python main.py --some-argument -
הפיצ'ר הזה מאוד שימושי כשאנחנו בונים תוכנות. דמיינו ואנחנו רוצים לכתוב תוכנת פייתון של מחשבון, כך שכאשר אנחנו מריצים אותה אנחנו נרצה להעביר לה ביטוי לחשב כמו 5+3.. נוכל להעביר את הביטוי הזה בארגומנטים של התוכנה בדרך הבאה:
python calculator.py 5+3
למה צריך ארגומנטים לתוכנות?¶
- משמש אותנו כעוד דרך כמתכנתים לקבל קלט מהמשתמש.
דוגמה: כשכותבים תוכנות שמטרתם היא לרוץ בטרמינל, למשל דמיינו והיינו צריכים לכתוב תוכנה שמציגה תוכן של קובץ שאנחנו מציינים לה בארגומנטים.python view_file.py .\my_file
תוכנות כאלו ממש יכולות להיקרא כמו פקודות בטרמינל, והכל בזכות השימוש של ארגומנטים של תוכנה. - למעשה, כאשר אנחנו מריצים את התוכנה
pythonבטרמינל, אנחנו מעבירים לה ארגומנט, שזה הקובץ פייתון שאנחנו רוצים להריץ. כך שלמעשה התוכנהpythonשכל הזמן השתמשנו בה, היא בעצמה מקבלת ארגומנטים.
python main.py
איך מעבירים ארגומנטים?¶
-
איך מעבירים ארגומנטים בPyCharm?
-
לחצו על השלושה נקודות למעלה,

-
לחצו על edit

- עכשיו הוסיפו בשדה parameters את הארגומנטים, ולחצו apply.
- עכשיו כשתריצו את התוכנה PyCharm יעביר לה את הארגומנטים.
- חזרה: איך מעבירים ארגומנטים בטרמינל?
- נריץ את הקוד עם הפקודה פייתון, וכל דבר שיבוא אחרי ייחשב כארגומנט:
python .\main.py some_argument 3424 dfsdfds
-
התנהלות עם ארגומנטים - program args¶
- איך אפשר להתנהל עם הארגומנטים שקיבלנו לתוכנת פייתון שלנו אחרי שהעבירו לנו אותם?
- בפייתון כדי להתנהל עם הארגומנטים שמעבירים לתוכנה שלנו אנחנו יכולים להשתמש במודולים כמו
sysו -argparse
התנהלות מול program args עם sys¶
- המודול
sysהוא מודול מובנה, לא צריך להתקין כלום. - המודול מאפשר לנו לגשת לרשימה של כל הארגומנטים באמצעות
sys.argv
import sys # Check the number of arguments if len(sys.argv) < 2: print("Usage: python script.py <argument>") sys.exit(1) # Exit with a non-zero status code to indicate an error # Accessing command-line arguments script_name = sys.argv[0] user_argument = sys.argv[1] print("Script Name:", script_name) print("User Argument:", user_argument) - המשתנה
argvמכיל רשימה של כל הארגומנטים של התוכנה. - שימו לב: הארגומנט מספר 0 שמעובר ברשימה הוא ארגומנט שמכיל את שם התוכנה.
התנהלות מול program args עם argparse¶
- זה מודול חיצוני שצריך להתקין עם הפקודה
pip install argparse, שמאפשר לנו להתנהל מול ארגומנטים לתוכנה שלנו ברמה יותר גבוהה.
import argparse def main(): # Create ArgumentParser object parser = argparse.ArgumentParser(description="A script that demonstrates argparse.") # Add positional argument parser.add_argument("user_argument", type=str, help="User-provided argument") # Add optional argument with a default value parser.add_argument("--optional_argument", type=int, default=10, help="An optional integer argument (default: 10)") # Add a boolean flag parser.add_argument("--flag", action="store_true", help="A boolean flag") # Parse the command-line arguments args = parser.parse_args() # Accessing arguments user_argument = args.user_argument optional_argument = args.optional_argument flag_enabled = args.flag # Perform actions based on arguments print("User Argument:", user_argument) print("Optional Argument:", optional_argument) print("Flag Enabled:", flag_enabled) if __name__ == "__main__": main() - אנחנו יוצרים אובייקט מהמחלקה
ArgumentParser, נשתמש באובייקט הזה כדי לציין איזה סוגים של ארגומנטים התוכנה שלנו אמורה לקבל. -
באמצעות המתודה
add_argumentאנחנו יכולים להוסיף סוג של ארגומנט שאנחנו מצפים לקבל מהמשתמש, הנה דוגמה של 3 סוגים של ארגומנטים שאנחנו יכולים לקבל והגדרתם:
הגדרת ארגומנט שאנחנו מחייבים את המשתמש להעביר (חייב להכיל ערך מסויים)
הגדרת ארגומנט שהמתשתמש לא חייב להעביר (ארגומנט בעל ערך עם ברירת מחדל)
parser.add_argument("--optional_argument", type=int, default=10, help="An optional integer argument (default: 10)")
"פלאג" - דגל: ארגומנט שלא מכיל ערך מסויים, מטרתו ממש לתת לנו קלט של אמת או שקר.
אחרכך נוכל לעשות לקרוא לparse_argsכדי להפעיל את הארגומנטים ולגשת אליהם כך:
args = parser.parse_args() user_argument = args.user_argument optional_argument = args.optional_argument flag_enabled = args.flag
עכשיו המשתמש יוכל להעביר ארגומנטים לתוכנה שלכם בצורה מבוקרת יותר. -
בנוסף: המודול יוצר לנו אוטמטית ארגומנט
main.py --help\.שאם המשתמש יעביר לתוכנה שלנו הוא יקבל הודעת עזרה עם הסבר על כל הארגומנטים שהוא יכול להעביר.