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() מקבלות כעת ארגומנטים של מילות מפתח | |
הערות