Python 3.9¶
Python 3.9.0 (סופית) שוחררה ב-5 באוקטובר 2020. התכונות עבור 3.9 מוגדרות ב-PEP 596 ותיאור מפורט של השינויים ניתן למצוא ב-What’s New in Python 3.9
תכונות |
סטטוס |
|
גישה מהירה למצב המודול ממתודות של טיפוסי הרחבה ב-C |
לא רלוונטי |
|
אופרטורי איחוד נוספו ל-dict |
הושלם [1] |
|
Type hinting של טיפוסים גנריים באוספים סטנדרטיים |
||
הערות גמישות לפונקציות ולמשתנים |
||
CPython מאמצת מחזור שחרור שנתי. במקום שנתי, השאיפה היא למחזור שחרור של חודשיים |
לא רלוונטי |
|
הגבלות דקדוק מרוככות על דקורטורים |
||
מסד הנתונים של אזורי הזמן של IANA נמצא כעת בספריית התקן במודול zoneinfo |
||
מתודות מחרוזת להסרת קידומות וסיומות |
||
CPython משתמשת כעת בפרסר חדש המבוסס על PEG |
לא רלוונטי |
שינויים נוספים בשפה:
__import__() מעלה כעת ImportError במקום ValueError |
הושלם |
Python מקבלת כעת את הנתיב המוחלט של שם קובץ הסקריפט שצוין בשורת הפקודה (לדוגמה: python3 script.py): התכונה __file__ של מודול ה-__main__ הפכה לנתיב מוחלט, ולא לנתיב יחסי |
|
כברירת מחדל, לקבלת הביצועים הטובים ביותר, ארגומנט errors נבדק רק בשגיאת הקידוד/הפענוח הראשונה וארגומנט encoding נעלם לעיתים עבור מחרוזות ריקות |
|
”“.replace(”“, s, n) מחזירה כעת s במקום מחרוזת ריקה עבור כל n שאינו אפס. היא עקבית כעת עם ”“.replace(”“, s) |
|
כל ביטוי תקף יכול כעת לשמש כדקורטור. בעבר, הדקדוק היה מגביל הרבה יותר |
|
הרצה מקבילה של aclose() / asend() / athrow() אסורה כעת, ו-ag_running משקף כעת את סטטוס ההרצה בפועל של הגנרטור האסינכרוני |
|
שגיאות בלתי צפויות בקריאה למתודה __iter__ אינן מוסתרות עוד על ידי TypeError באופרטור in ובפונקציות contains(), indexOf() ו-countOf() של מודול ה-operator |
|
ביטויי lambda ללא סוגריים אינם יכולים עוד להיות חלק הביטוי בסעיף if בהשמות (comprehensions) ובביטויי גנרטור |
שינויים במודולים מובנים:
בשל חששות אבטחה משמעותיים, פרמטר ה-reuse_address של asyncio.loop.create_datagram_endpoint() אינו נתמך עוד |
|
נוספה coroutine חדשה shutdown_default_executor() שמתזמנת כיבוי עבור ה-executor המוגדר כברירת מחדל אשר ממתינה לסיום הסגירה של ה-ThreadPoolExecutor. כמו כן, asyncio.run() עודכנה לשימוש ב-coroutine החדשה. |
|
נוספה asyncio.PidfdChildWatcher, מימוש child watcher ספציפי ל-Linux אשר דוגם מתארי קבצים של תהליכים |
|
נוספה coroutine asyncio.to_thread() חדשה |
|
בעת ביטול המשימה עקב timeout, asyncio.wait_for() תמתין כעת עד שהביטול יושלם גם במקרה שבו timeout הוא <= 0, כפי שהיא עושה עם timeouts חיוביים |
|
asyncio מעלה כעת TyperError בעת קריאה למתודות לא תואמות עם socket מסוג ssl.SSLSocket |
|
איסוף אשפה אינו חוסם על אובייקטים שתחיו (resurrected) |
|
נוספה פונקציה חדשה gc.is_finalized() לבדיקה אם אובייקט עבר finalize על ידי אוסף האשפה |
|
הורחבה הפונקציה math.gcd() לטיפול במספר ארגומנטים. בעבר, היא תמכה בשני ארגומנטים בלבד |
|
נוספה math.lcm(): מחזירה את הכפולה המשותפת הקטנה ביותר של הארגומנטים שצוינו |
|
נוספה math.nextafter(): מחזירה את ערך הנקודה הצפה הבא אחרי x לכיוון y |
|
נוספה math.ulp(): מחזירה את ערך הסיבית הפחות משמעותית של מספר נקודה צפה |
|
נחשפו os.pidfd_open() ו-os.P_PIDFD הספציפיים ל-Linux |
|
הפונקציה os.unsetenv() זמינה כעת גם ב-Windows |
הושלם |
הפונקציות os.putenv() ו-os.unsetenv() זמינות כעת תמיד |
הושלם |
נוספה פונקציה os.waitstatus_to_exitcode(): ממירה סטטוס המתנה לקוד יציאה |
|
נוספה מתודה חדשה random.Random.randbytes: מייצרת בתים אקראיים |
|
נוספה תכונה חדשה sys.platlibdir: שם ספריית הספרייה הספציפית לפלטפורמה |
|
בעבר, sys.stderr הייתה מאוחסנת בבלוקים (block-buffered) כשלא אינטראקטיבית. כעת stderr ברירת מחדל היא תמיד מאוחסנת בשורות (line-buffered) |
|
הערות