בפייתון ישנה היה נפוץ גם השימוש באופרטורים לוגיים:
קוד: |
stat = age<19 and "teen" or "adult"
|
שעובד (רוב הזמן), בגלל שהאופרטורים הנ"ל מחזירים את הערך האחרון שהם חישבו, ובפייתון רוב האובייקטים נחשבים true לצרכים לוגיים.
המיעוט של הזמן שבו זה לא עובד הוא כאשר הערך שאמור לחזור כשהתנאי מתקייים מוערך לוגית כ-false (מחרוזת, רשימה או מילון ריקים, None, 0, false, או אובייקט שמחזיר ערכים כאלה על פונקציות "קסם" מסויימות). בהרבה מקרים, בניגוד לדוגמאות, הערך הזה לא ידוע בזמן הכתיבה (למשל משתנה או חוזר מקריאה לפונקציה). התחביר החדש פותר את הבעיה הזו (ניתן גם לטעון שהוא ברור וקריא יותר; בעיני, אם התנאי מוערך ראשון, הוא צריך גם להופיע ראשון).
אגב שרשורים, אני חושד שהרבה אנשים לא מודעים לכך שבפייתון ניתן לשרשר אופרטורים של השוואה:
באמת בודק תחום, ולא כמו ברוב השפות שבהן זה ביטוי חוקי (ב-C למשל, זה תמיד מחזיר true כי קודם משווים את x ל-10, ואת התשובה, 0 או 1, משווים ל-20).