שיטות עבודה מומלצות להצהרות תנאי בפייתון
מאמר זה מסביר את שיטות העבודה המומלצות להצהרות תנאי בפייתון.
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 בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.