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) | |
הערות