השיפורים שהכי אהבתי ב Python 3.8

17/10/2019

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

1. אופרטור הניבתן

אופרטור סוס הים (או ה Walrus Operator לפני תרגום) הוא אופרטור השמה חדש שגם מחזיר ערך, ולכן אפשר להשתמש בו בתור Expression. ולמה זה נפלא? רק חשבו על הקוד הבא:

import re

text = "5% discount"
m = re.search(r'(\d+)% discount', text)
if m:
    print(f"You've got a {m.group(1)}% discount on your stuff")

היינו ממש שמחים לשלב את שורת החיפוש (re.search) בתוך שורת התנאי. והנה בפייתון 3.8 אנחנו כבר יכולים להתחיל. הקוד נראה כך:

import re

text = "5% discount"
if (m := re.search(r'(\d+)% discount', text)):
    print(f"You've got a {m.group(1)}% discount on your stuff")

2. דיבג יותר נוח במחרוזות

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

>>> x = 40
>>> print(f"look {x=}")
look x=40

3. שמות יוניקודים בביטויים רגולאריים

כבר הרבה זמן שאנחנו יכולים להדפיס קקי על המסך עם:

print("\N{PILE OF POO}")

אבל פייתון 3.8 הוסיף גם את האפשרות למצוא קקי (או כל סימן יוניקוד אחר) באמצעות ביטויים רגולאריים. הקוד הבא עובד ויספר לכם אם המשתנה text מכיל ערימת קקי:

re.search(r'\N{PILE OF POO}', text)

אגב כאן יש רשימה של השמות של תווי יוניקוד: https://unicode.org/charts/charindex.html

4. מה עוד?

יש עוד המון שינויים בין השאר האפשרות להזיז את תיקיות __cache__ למקום אחר, האפשרות לציין ארגומנטים לפונקציות שאי אפשר להעביר באמצעות שם, שיפורים בהרבה מודולים ותיקוני באגים. את הרשימה המלאה תוכלו למצוא בעמוד הזה: https://docs.python.org/3/whatsnew/3.8.html

שחקו עם זה וספרו בתגובות איזה פיצ'ר אתם הכי אהבתם.