שיטות עבודה מומלצות להצהרות תנאי בפייתון

שיטות עבודה מומלצות להצהרות תנאי בפייתון

מאמר זה מסביר את שיטות העבודה המומלצות להצהרות תנאי בפייתון.

YouTube Video

שיטות עבודה מומלצות להצהרות תנאי בפייתון

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

השתמש בביטויים מותנים מפורשים

כתבו ביטויים תנאים בצורה תמציתית וברורה, והימנעו מהצהרות מיותרות.

1condition = True
2
3### Bad Example
4if condition == True:
5    pass
6
7### Good Example
8if condition:
9    pass
  • בפייתון, ניתן לציין שתנאי הוא נכון על ידי כתיבת if condition:.

שילוב של תנאים מרובים

כאשר משלבים תנאים מרובים, השתמש ב-and או or. עם זאת, כאשר הביטויים המותנים נעשים מורכבים, הקריאות עשויה לרדת, לכן שקול את ההתאמות הבאות:.

 1age = 15
 2is_student = True
 3
 4### Bad Example
 5# Complex condition
 6if (age > 18 and age < 65) or (is_student and age > 15):
 7    pass
 8
 9### Good Example
10# Improving readability
11is_working_age = 18 < age < 65
12is_eligible_student = is_student and age > 15
13
14if is_working_age or is_eligible_student:
15    pass
  • על ידי פיצול תנאים והקצאתם למשתנים ניתן לשפר את הקריאות.

הערכה מקוצרת של and/or

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

 1user = None
 2def expensive_check():
 3    return True
 4
 5# Example of short-circuiting with 'and'
 6if user and user.is_active:
 7    # If user is None, user.is_active will NOT be evaluated
 8    print("Active user found.")
 9
10# Example of short-circuiting with 'or'
11if user.is_admin or expensive_check(user):
12    # If user.is_admin is True, expensive_check will NOT be called.
13    print("Access granted.")
14else:
15    print("Access denied.")
  • על ידי ניצול הערכה מקוצרת, ניתן לשפר את יעילות ובטיחות העיבוד.

קדימות של and ו-or

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

 1age = 15
 2is_student = True
 3
 4### Unclear example
 5# This is interpreted as: age > 18 and (age < 65 or is_student)
 6if age > 18 and age < 65 or is_student:
 7    pass
 8
 9### Clear example
10# Explicit parentheses make the intended logic obvious
11if (age > 18 and age < 65) or is_student:
12    pass
  • על ידי שימוש בסוגריים, ניתן להבהיר את סדר הקדימות של and ו-or ולהפחית את הסיכון לבאגים לא צפויים.

הבן Truthy ו-Falsy

בפייתון, הערכים הבאים נחשבים כ-False:.

  • אין
  • שקר
  • המספר 0 (כולל 0.0)
  • סוגי רצפים ריקים (כגון רשימות, טאפלות או מחרוזות ריקות)
    • דוגמאות: [], (), ""
  • מילון ריק
    • דוגמה: {}

שימוש בזה יכול לעזור לפשט את הביטויים המותנים שלך.

1items = [1, 2, 3]
2
3### Bad Example
4if len(items) > 0:
5    pass
6
7### Good Example
8if items:
9    pass

שימוש נכון ב-elif ו-else

כאשר מעריכים תנאים מרובים, השתמש ב-elif. השתמש ב-else כדי להגדיר התנהגות ברירת מחדל בסוף.

 1score = 80
 2
 3if score >= 90:
 4    grade = "A"
 5elif score >= 80:
 6    grade = "B"
 7elif score >= 70:
 8    grade = "C"
 9else:
10    grade = "F"
  • השימוש ב-else אינו חובה. אם כל התנאים מכוסים, אפשר לדלג על כך.
  • שימו לב לסדר של הביטויים התנאים וארגנו אותם בצורה הגיונית וללא מיותרות.

הגבילו את עומק ההשקעות

השקעה עמוקה של תנאי if מקשה על קריאת הקוד.

 1def access_resource():
 2    return True
 3
 4### Bad Example
 5def deep_nest(user, resource):
 6    if user.is_authenticated:
 7        if user.has_permission:
 8            if resource.is_available:
 9                access_resource()
10
11### Good Example
12def early_return(user, resource):
13    if not user.is_authenticated:
14        return
15    if not user.has_permission:
16        return
17    if not resource.is_available:
18        return
19
20    access_resource()
  • שימוש בחזרות מוקדמות יכול להפחית השקעה ולעשות את הקוד תמציתי יותר.

הימנעו משימוש בתנאי if על שורה אחת

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

 1condition = False
 2def do_something():
 3    return True
 4
 5### Bad Example
 6if condition: do_something()
 7
 8### Good Example
 9if condition:
10    do_something()
  • שימוש בהצהרות if בשורה אחת מקובל רק עבור תנאים או פעולות קצרים, אך הימנעו מכתיבת קוד מפורט מדי.

פישוט בעזרת אופרטור תנאי (ternary operator) או or

בענפים תנאיים פשוטים, שימוש באופרטור תנאי או or יכול להקטין ולפשט את הקוד שלך. עם זאת, שימוש יתר בכלים אלו עלול להקשות על קריאת הקוד, ולכן מומלץ להשתמש בהם רק עבור תנאים פשוטים ואינטואיטיביים.

 1is_admin = True
 2input_name = None
 3
 4# Regular if statement
 5if is_admin:
 6    role = "Administrator"
 7else:
 8    role = "User"
 9
10# Simplified using an inline if
11role = "Administrator" if is_admin else "User"
12
13# Use 'or' to provide a default value
14name = input_name or "Guest"
  • בתנאים פשוטים, שימוש באופרטור תנאי (ternary operator) או or יכול לקצר את הקוד ולהפוך אותו לברור יותר.

מטמון ביטויים תנאים

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

 1def expensive_function():
 2    pass
 3
 4def another_expensive_function():
 5    pass
 6
 7### Bad Example
 8if expensive_function() and another_expensive_function():
 9    pass
10
11### Good Example
12result1 = expensive_function()
13result2 = another_expensive_function()
14if result1 and result2:
15    pass

סיכום

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

תוכלו לעקוב אחר המאמר שלמעלה באמצעות Visual Studio Code בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.

YouTube Video