מה חדש
שגיאות ברורות יותר
פייתון 3.11 הביאה איתה שיפור בשגיאות מדויקות יותר.
פייתון 3.12 משפרת את תצוגת השגיאות גם בפן השמי.
- טעיתם בשם המודול
- טעיתם בשם משתנה פנימי
- שכחתם לייבא מודול
1 | from collections import chainmap |
תחביר חדש לפורמט מחרוזות
כמה שיפורים לשימוש בפורמט:
ניתן לכתוב כל ביטוי בתוך הסוגריים:
1 | f"""{f'''{f'{f"{1+1}"}'}'''}""" |
ניתן להשתמש בתווים מיוחדים כמו ה-backslash
.
1 | print(f"This is the playlist: {"\n".join(songs)}") |
1 | This is the playlist: Take me back to Eden |
וגם בשימוש בפורמט השגיאות השתפרו:
1 | my_string = f"{x z y}" + f"{1 + 1}" |
תיקון קיצור איטרציה בשימוש עם מילונים
אם אתם רוצים להשתמש במילון כדי לרוץ כעת ניתן להשתמש ב-locals()
על מנת לייעל את התהליך ולהימנע משגיאות.
1 | keys = list(locals()); [k for k in keys] |
באפר לכל אובייקט!
באפר בפייתון הם בדרך כלל אובייקטים מסוג bytearray
או bytes
.
כל אובייקט יכול להתנהג כמו באפר עם מימוש 2 מתודות:
__buffer__
__release__buffer__
כדי לממש את פונקציית הבאפר יש להחזיר אובייקט מסוג memoryview
.
https://docs.python.org/3.12/reference/datamodel.html#object.__buffer__
GIL - עבור כל מפרש
כל מפרש של פייתון רץ עם GIL
.
במידה ויש כמה מפרשים אז כולם ייחלקו lock
גלואבלי.
מה שלא מאפשר באמת הרצה של קוד מקבילי.
עבור פייתון 4 עושים מאמצים רבים כדי לשחרר את המפרש מהנועל הגלובאלי.
כרגע קיים רק קונפיגורציה לשפת C
אך בפייתון 3.13 יתווסף גם קונפיגורציה בפייתון.
התנהגות חדשה ב-TypeHints
שימוש ב-unpack
כאשר משתמשים ב-**kwargs
:
1 | from typing import TypedDict, Unpack |
דקורטור חדש בשם override
1 | from typing import override |
למה בכלל צריך את זה?
כדי לחזק את כתיבת ה-API
בבדיקות שאכן אנחנו משתמשים בפונקציות הנכונות.
זו אחת המגרעות הגדולות בשפות דינאמיות - ממש חרב פיפיות.
סוג משתנה גנרי בתחביר פשוט יותר
לפני:
1 | from typing import TypeAlias |
אחרי:
1 | type ListOrSet[T] = list[T] | set[T] |
השימוש במילה type
תגדיר לנו את המשתנה גנרי במקום הצורך להגדיר בעזרת TypeVar
בעצמנו!
ועוד כמה שיפורים
- ביצועי רשת ב
asyncio
השתפרו! - Calender - עכשיו נוסף גם
Month
ו -Day
. - itertools עכשיו מאפשר להשתמש ב-
itertools.batched()
כדי לבצע חלוקה ל-batch
ים. - pathlib - הוספת
walk
כדי לרוץ על עצים. - tempfile.NamedTemporaryFile מאפשר הוספת פרמטר למחיקה כאשר זה נסגר
- unittest מאפשר להשתמש ב-
--durations
כדי להציג את הטסטים הכי איטיים. - שיפור ביצועים בפתיחת
asyncio.Task
. - שיפור ביצועים ב-
re.sub
Change log
לכל השינויים ב-Change log
תודה על הקריאה!