מה חדש בפייתון 3.9



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

כשמשתחררת גרסה של פייתון, בדרך כלל ה release notes מחולקים לנושאים כמו:

syntax features, built-in features, new features in the standard library, Interpreter improvements, and new library modules.

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

שימו לב: בגרסה 3.9 החבר׳ה של פייתון לקחו צעדים רציניים נוספים בהורדת התמיכה ובתאימות לאחור אל מול פייתון 2.7. בעבר פיצ׳רים פותחו עם תאימות מסוימת לאחור אבל מגרסה לגרסה הפיצ׳רים תואמים פחות ואף יורדת תאימות בפיצ׳רים ישנים. זאת ניתן לראות לפי Deprecation Warnings על גבי ספריות ישנות. אם אינכם בטוחים באילו פיצ׳רים אתם משתמשים שאינם נתמכים עוד, השתמשו במדריך הזה על מנת לבדוק זאת.


הפיצ׳רים החדשים

אופרטורים למיזוג ועדכון dictionaries

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

אם עד כה היינו משתמשים בפונקציה dict.update וב {d2,**d1**} על מנת לעדכן ולמזג באופן הזה: 

>> d1 = {'oranges': 2, 'apples': 4}
>> 
d2 = {'bananas': 3, 'oranges': 1}


Merge

>> d3 = {**d1,**d2}

>> d3

{'oranges': 1, 'apples': 4, 'bananas': 3}


Update

>> d1.update(d2)

>> d1

{'oranges': 1, 'apples': 4, 'bananas': 3}


כעת נוכל להשתמש באופרטור | (pipe/קו ניצב) על מנת למזג בין ה dicts ולהחזיר dict שלישי או באופרטור =| על מנת למזג מילון אחד אל מילון אחר באופן הבא:


>> d1 = {'oranges'2'apples'4}
>> 
d2 = {'bananas'3'oranges'1}


Merge

>> d3 = d1|d2

>> d3

{'oranges': 1, 'apples': 4, 'bananas': 3}


Update

>> d1|=d2

>> d1

{'oranges': 1, 'apples': 4, 'bananas': 3}


פונקציות חדשות ל string לצורך הסרה של תחיליות וסופיות (prefixes and suffixes)


עד היום, כדי להוריד חלק מסוים בסוף המחרוזת בה אנחנו משתמשים היינו צריכים להשתמש ב slicing באופן הזה:


>> url = 'automatzia.com'

>> if url.endswith('.com'):

..     url = url[:-4]

>> url

'automatzia'


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


>> url = 'automatzia.com'

>> url = url.removesuffix('.com')

>> url

'automatzia'

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


Type hinting על collections באופן מובנה


לעוד מישהו נמאס לעשות import ל typing בכל פעם שהוא רוצה לעשות hinting ל list או dict?
אז עכשיו פייתון הכניסו באופן מובנה את האפשרות!

אם עד עכשיו זה היה צריך להראות כך:

>> import typing

>> def print_fruits(fruits: typing.List[str]) -> None:

..     for fruit in fruits:

..         print(fruit)

כעת נוכל לעשות את זה פשוט כך:


>> def print_fruits(fruits: list[str]) -> None:

..     for fruit in fruits:

..         print(fruit)



סיכום

בפוסט הצגנו 3 תוספות חדשות שהגיעו בפייתון 3.9. אלו שלושת התוספות שאני מצאתי מעניינות ומעבר אליהן יש עוד המון (בעיקר שיפורים קטנים בספריות). לא הייתי אומר שבגרסה היה שינוי סנסציוני, לפחות לא באופן שמשתמשי הקצה הפשוטים יחוו.

בכל אופן, ממליץ לקרוא בעיון יותר מעמיק ברשימת השינויים המלאה

נתראה בפוסט הבא :)

תגובות

  1. איזה כיף שהפוסט מתומצת ומכיל דוגמאות של before & after. תודה רבה תומר!

    השבמחק

הוסף רשומת תגובה

פוסטים פופולריים מהבלוג הזה

תכנות מונחה עצמים | Dependency Inversion Principle

מהם קבצי DLL ואיך להשתמש בהם?

מה ההבדל בין אוטומציה לפיתוח רגיל