הצהרת ה-Python Switch

מבוא

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

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

לפני v3.10

לפני שהצהרת ה-Python switch הייתה זמינה בשפה, מתכנתים היו צריכים להשתמש במבני בקרה אחרים כדי להשיג את אותה פונקציונליות. גישה נפוצה אחת הייתה להשתמש בסדרה של הצהרות if-else, כאשר כל ענף קוד משויך לערך שונה של המשתנה הנבדק.

לדוגמה, שקול את הקוד הבא:

value = "foo"

if value == "foo":
    print("foo was selected")
elif value == "bar":
    print("bar was selected")
else:
    print("Nothing valid was selected")

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

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

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

לדוגמה, שקול את הקוד הבא:

value = "foo"

switch = {
    "foo": lambda: print("foo was selected"),
    "bar": lambda: print("bar was selected"),
    "default": lambda: print("Nothing valid was selected"),
}

switch.get(value, "default")()

בקוד זה, הגדרנו מילון בשם switch, עם מפתחות המייצגים את הערכים האפשריים של המשתנה value. עבור כל מקש, הקצינו כערך פונקציית למבדה, המכילה את ענף הקוד המתאים. כדי להפעיל את ענף הקוד המתאים, אנו משתמשים ב- get() שיטה של ​​המילון, המאפשרת לנו לציין ערך ברירת מחדל לשימוש אם המפתח הנתון אינו קיים במילון.

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

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

השמיים match/case הצהרה (אחרי v3.10)

לאחר Python v3.10, משפט ה-switch מטופל באמצעות ה- match מילת מפתח. מילת מפתח זו משמשת ליצירת ביטוי תואם דפוסים, המאפשר לך לבדוק את הערך של משתנה או ביטוי נתון מול סדרה של תבניות. אם נמצא התאמה, הענף המתאים של הקוד מבוצע.

לדוגמה, שקול את הקוד הבא:

value = "foo"

match value:
    case "foo":
        print("foo was selected")
    case "bar":
        print("bar was selected")
    case _:
        print("Nothing valid was selected")

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

בקוד זה, אנו משתמשים ב- match מילת מפתח כדי ליצור ביטוי תואם דפוס, שבודק את הערך של המשתנה value נגד שורה של דפוסים. אם value שווה ל-"foo", הענף הראשון של הקוד יבוצע. אם value שווה ל"סרגל", הענף השני של הקוד יבוצע. אחרת, הקוד בבלוק else יבוצע.

ליפול דרך

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

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

לדוגמה, שקול את הקוד הבא:

value = "y"

match value:
    case "yes" | "y":
        print("The user confirmed")
    case _:
        print("The user denied")

כאן, אם הערך של value שווה ל"כן" or "y", הענף הראשון של הקוד יבוצע. זה שווה ערך להתנהגות הנפילה בהצהרת מתג מסורתית.

ברירות מחדל

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

סיכום

כפי שאתה יכול לראות, הצהרת Python match (הידועה גם בשם "מתג") מציעה דרך חזקה ונוחה לשלוט בזרימת התוכנית שלך. בין אם אתה חדש ב-Python או מפתח מנוסה, הצהרת ה-switch יכולה לעזור לך לכתוב קוד נקי ויעיל יותר.

בול זמן:

עוד מ Stackabuse