Python 3.6¶
Python 3.6 beta 1 שוחררה ב-12 בספטמבר 2016, וניתן למצוא כאן סיכום של התכונות החדשות:
תכונות תחביר חדשות |
סטטוס |
|
עיצוב מחרוזות ליטרליות |
הושלם |
|
קווים תחתונים בליטרלים מספריים |
הושלם |
|
גנרטורים אסינכרוניים |
||
תחביר להערות משתנים (זמני) |
הושלם |
|
השמות אסינכרוניות (comprehensions) |
||
תכונות מובנות חדשות |
||
שימור הסדר של kwargs בפונקציה |
||
התאמה אישית פשוטה יותר של יצירת מחלקות |
חלקי [1] |
|
שימור סדר הגדרת תכונות המחלקה |
||
שינויים בספריית התקן |
||
פתרון אי-בהירות של זמן מקומי |
||
הוספת מודול Secrets לספריית התקן |
||
הוספת פרוטוקול נתיב מערכת קבצים |
||
רכיבים פנימיים של CPython |
||
הוספת גרסה פרטית ל-dict |
לא ייושם |
|
הוספת API להערכת frame ל-CPython |
||
שינויים ב-Linux/Windows |
||
הפיכת |
||
שינוי קידוד מסוף Windows ל-UTF-8 |
||
שינוי קידוד מערכת הקבצים של Windows ל-UTF-8 |
||
שינויים נוספים בשפה:
הצהרת global או nonlocal חייבת כעת להופיע טקסטואלית לפני השימוש הראשון בשם המושפע באותו תחום (scope). בעבר זו הייתה SyntaxWarning. |
|
כעת ניתן להגדיר מתודה מיוחדת כ-None כדי לציין שהפעולה המתאימה אינה זמינה. לדוגמה, אם מחלקה מגדירה את __iter__() כ-None, המחלקה אינה ניתנת לאיטרציה. |
|
רצפים ארוכים של שורות traceback חוזרות מקוצרים כעת ל-[Previous line repeated {count} more times] |
|
פעולת import מעלה כעת את החריגה החדשה ModuleNotFoundError כאשר אין באפשרותה למצוא מודול. קוד שכרגע בודק את ImportError (ב-try-except) עדיין יעבוד. |
|
מתודות מחלקה המסתמכות על super() ללא ארגומנטים יעבדו כעת כראוי כאשר נקראות ממתודות metaclass במהלך יצירת המחלקה. |
שינויים במודולים מובנים:
איטרטורים מוצים של array.array יישארו כעת מוצים גם אם המערך עליו מבוצעת האיטרציה הורחב. |
|
הפונקציה b2a_base64() מקבלת כעת ארגומנט מילת מפתח אופציונלי newline לשליטה בשאלה אם תו השורה החדשה מצורף לערך המוחזר |
הושלם |
הקבוע החדש cmath.tau (τ) נוסף |
|
קבועים חדשים: cmath.inf ו-cmath.nan כדי להתאים ל-math.inf ו-math.nan, וגם cmath.infj ו-cmath.nanj כדי להתאים לפורמט שבו משתמש repr של מספרים מרוכבים |
|
מחלקת הבסיס המופשטת החדשה Collection נוספה כדי לייצג מחלקות מכולה ניתנות לאיטרציה בעלות גודל |
|
מחלקת הבסיס המופשטת החדשה Reversible מייצגת מחלקות ניתנות לאיטרציה שמספקות גם את המתודה __reversed__(). |
|
מחלקת הבסיס המופשטת החדשה AsyncGenerator מייצגת גנרטורים אסינכרוניים. |
|
הפונקציה namedtuple() מקבלת כעת ארגומנט מילת מפתח אופציונלי module, אשר, כשמצוין, משמש עבור התכונה __module__ של מחלקת ה-named tuple המוחזרת. |
|
הארגומנטים verbose ו-rename של namedtuple() הם כעת מילות מפתח בלבד. |
|
מופעי collections.deque רקורסיביים ניתנים כעת לעיבוד pickle. |
|
פונקציות הגיבוב BLAKE2 נוספו למודול. blake2b() ו-blake2s() זמינות תמיד ותומכות במלוא מערך התכונות של BLAKE2. |
|
פונקציות הגיבוב SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512(), ופונקציות הגיבוב SHAKE shake_128() ו-shake_256() נוספו. |
|
פונקציית גזירת המפתח מבוססת הסיסמה scrypt() זמינה כעת עם OpenSSL 1.1.0 ומעלה. |
|
json.load() ו-json.loads() תומכות כעת בקלט בינארי. JSON מקודד צריך להיות מיוצג באמצעות UTF-8, UTF-16 או UTF-32. |
|
הקבוע החדש math.tau (τ) נוסף |
הושלם |
מתודה חדשה close() מאפשרת סגירה מפורשת של איטרטור scandir(). איטרטור scandir() תומך כעת בפרוטוקול מנהל ההקשר (context manager). |
|
ב-Linux, os.urandom() חוסמת כעת עד שמאגר האנטרופיה urandom של המערכת מאותחל, כדי להגביר את האבטחה. |
|
קריאת המערכת getrandom() של Linux (קבלת בתים אקראיים) חשופה כעת כפונקציה החדשה os.getrandom(). |
|
נוספה תמיכה בטווחי modifier בביטויים רגולריים. דוגמאות: »(?i:p)ython« מתאים ל-»python« ול-»Python«, אך לא ל-»PYTHON«; »(?i)g(?-i:v)r« מתאים ל-»GvR« ול-»gvr«, אך לא ל-»GVR«. |
|
ניתן לגשת לקבוצות של אובייקט match באמצעות __getitem__, שהוא שקול ל-group(). כך ש-mo[»name«] שקול כעת ל-mo.group(»name«). |
|
אובייקטי match תומכים כעת באובייקטים דמויי-אינדקס כאינדקסים של קבוצות. |
|
הפונקציה ioctl() תומכת כעת בקוד הבקרה SIO_LOOPBACK_FAST_PATH. |
|
הקבועים SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC ו-SO_PASSSEC של getsockopt() נתמכים כעת. |
|
setsockopt() תומכת כעת בצורה setsockopt(level, optname, None, optlen: int). |
|
מודול socket תומך כעת במשפחת הכתובות AF_ALG לממשק עם crypto API של ליבת Linux. ALG_, SOL_ALG ו-sendmsg_afalg() נוספו. |
|
קבועי Linux חדשים TCP_USER_TIMEOUT ו-TCP_CONGESTION נוספו. |
|
ssl תומך ב-OpenSSL 1.1.0. הגרסה המינימלית המומלצת היא 1.0.2. |
|
3DES הוסר מחבילות הצפנים המוגדרות כברירת מחדל וחבילות הצפנים ChaCha20 Poly1305 נוספו. |
|
ל-SSLContext יש כעת תצורת ברירת מחדל טובה יותר עבור אפשרויות וצפנים. |
|
ניתן להעתיק הפעלת SSL מחיבור צד-לקוח אחד לאחר באמצעות המחלקה החדשה SSLSession. חידוש הפעלת TLS יכול להאיץ את לחיצת היד הראשונית, להפחית השהיה ולשפר ביצועים. |
|
ניתן להשתמש במתודה החדשה get_ciphers() כדי לקבל רשימה של צפנים מאופשרים לפי סדר עדיפות הצפנים. |
|
כל הקבועים והדגלים הומרו ל-IntEnum ול-IntFlags. |
|
פרוטוקולי TLS ספציפיים לצד שרת ולצד לקוח עבור SSLContext נוספו. |
|
נוספו SSLContext.post_handshake_auth לאיפשור ו-ssl.SSLSocket.verify_client_post_handshake() ליזום אימות post-handshake של TLS 1.3. |
|
תומך כעת במספרים בנקודה צפה בדיוק חצי לפי IEEE 754 באמצעות מציין הפורמט »e«. |
|
הפונקציה החדשה getfilesystemencodeerrors() מחזירה את שם מצב השגיאה המשמש להמרה בין שמות קבצים ב-Unicode לשמות קבצים בבתים. |
|
הפונקציות compress() ו-decompress() מקבלות כעת ארגומנטים של מילות מפתח |
|
הערות