Python 3.5

להלן רשימה של PEPs שגובשו/התקבלו עבור Python 3.5, מקובצים לפי השפעתם על MicroPython.

הרחבות לתחביר

סטטוס

PEP 448

הכללות פריקה (unpacking) נוספות

חלקי

PEP 465

אופרטור כפל מטריצות חדש

מלא

PEP 492

קורוטינות עם תחביר async ו-await

מלא

הרחבות ושינויים בזמן הריצה

PEP 461

עיצוב % עבור מחרוזות בינאריות

מלא

PEP 475

ניסיון חוזר של קריאות מערכת הנכשלות עם EINTR

מלא

PEP 479

שינוי הטיפול ב-StopIteration בתוך גנרטורים

מלא

שינויים בספרייה הסטנדרטית

PEP 471

os.scandir()

PEP 485

math.isclose(), פונקציה לבדיקת שוויון מקורב

מלא

שינויים שונים

PEP 441

תמיכה משופרת ביישומי zip של Python

PEP 486

הפיכת Python Launcher למודע לסביבות וירטואליות

לא רלוונטי

PEP 484

רמזי טיפוס (ייעוץ בלבד)

מלא [1]

PEP 488

ביטול קבצי PYO

לא רלוונטי

PEP 489

עיצוב מחדש של טעינת מודולי הרחבה

שינויים נוספים בשפה:

נוספו מטפלי השגיאות namereplace. מטפלי השגיאות backslashreplace פועלים כעת עם פענוח ותרגום.

מחרוזות תיעוד (docstrings) של מאפיינים (properties) ניתנות כעת לכתיבה. הדבר שימושי במיוחד עבור מחרוזות תיעוד של collections.namedtuple()

ייבואים מעגליים הכוללים ייבואים יחסיים נתמכים כעת.

מודולים חדשים:

שינויים במודולים מובנים:

collections

מחלקת OrderedDict ממומשת כעת ב-C, מה שהופך אותה למהירה פי 4 עד 100.

התצוגות OrderedDict.items(), OrderedDict.keys(), OrderedDict.values() תומכות כעת באיטרציה הפוכה (reversed()).

מחלקת deque מגדירה כעת את index(), insert(), ו-copy(), ותומכת באופרטורים + ו-*.

מחרוזות תיעוד (docstrings) שנוצרות על ידי namedtuple() ניתנות כעת לעדכון.

מחלקת UserString מממשת כעת את המתודות __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() ו-maketrans() כדי להתאים למתודות התואמות של str.

heapq

ניתן כעת להתאים אישית את השוואת האיברים ב-merge() על ידי העברת פונקציית מפתח בארגומנט מילת מפתח אופציונלי חדש key, וניתן להשתמש בארגומנט מילת מפתח אופציונלי חדש reverse כדי להפוך את השוואת האיברים

io

מתודה חדשה BufferedIOBase.readinto1(), המשתמשת בלכל היותר קריאה אחת למתודות RawIOBase.read() או RawIOBase.readinto() של זרם הגלם הבסיסי

json

מפענח ה-JSON זורק כעת JSONDecodeError במקום ValueError כדי לספק מידע הקשר טוב יותר על השגיאה.

math

שני קבועים חדשים נוספו למודול math: inf ו-nan.

מלא

פונקציה חדשה isclose() מספקת דרך לבדוק שוויון מקורב.

נוספה פונקציה חדשה gcd(). הפונקציה fractions.gcd() הוצאה כעת משימוש.

os

נוספה הפונקציה החדשה scandir() המחזירה איטרטור של אובייקטי DirEntry.

הפונקציה urandom() משתמשת כעת בקריאת המערכת getrandom() ב-Linux 3.17 או חדש יותר, וב-getentropy() ב-OpenBSD 5.6 וחדש יותר, מה שמסיר את הצורך להשתמש ב-/dev/urandom ומונע כשלים עקב מיצוי פוטנציאלי של מתארי קבצים.

פונקציות חדשות get_blocking() ו-set_blocking() מאפשרות קבלה והגדרה של מצב החסימה של מתאר קובץ (O_NONBLOCK.)

ישנה פונקציה חדשה os.path.commonpath() המחזירה את תת-הנתיב המשותף הארוך ביותר מבין שמות הנתיבים שהועברו

re

הפניות והפניות מותנות לקבוצות בעלות אורך קבוע מותרות כעת בטענות lookbehind

מספר קבוצות הלכידה בביטויים רגולריים אינו מוגבל עוד ל-100.

הפונקציות sub() ו-subn() מחליפות כעת קבוצות שלא הותאמו במחרוזות ריקות במקום לזרוק חריגה.

לחריגות re.error יש תכונות חדשות, msg, pattern, pos, lineno ו-colno, המספקות מידע הקשר טוב יותר על השגיאה

socket

פונקציות עם פסקי זמן (timeouts) משתמשות כעת בשעון מונוטוני במקום בשעון מערכת.

מתודה חדשה socket.sendfile() מאפשרת שליחת קובץ דרך שקע באמצעות הפונקציה עתירת הביצועים os.sendfile() ב-UNIX, מה שגורם להעלאות מהירות פי 2 עד 3 מאשר בעת שימוש ב-socket.send() הרגילה

המתודה socket.sendall() אינה מאפסת עוד את פסק הזמן של השקע בכל פעם שביטים מתקבלים או נשלחים. פסק הזמן של השקע הוא כעת משך הזמן הכולל המרבי לשליחת כל הנתונים.

ארגומנט ה-backlog של המתודה socket.listen() הוא כעת אופציונלי. כברירת מחדל הוא מוגדר ל-SOMAXCONN או ל-128, הקטן מביניהם.

מלא

ssl

תמיכה ב-Memory BIO

תמיכה במשא ומתן על פרוטוקול שכבת היישום (Application-Layer Protocol Negotiation)

ישנה מתודה חדשה SSLSocket.version() לתשאול גרסת הפרוטוקול הממשית הנמצאת בשימוש.

מחלקת SSLSocket מממשת כעת מתודה SSLSocket.sendfile().

המתודה SSLSocket.send() זורקת כעת את החריגה ssl.SSLWantReadError או ssl.SSLWantWriteError בשקע לא-חוסם אם הפעולה הייתה חוסמת. בעבר, היא הייתה מחזירה 0.

הפונקציה cert_time_to_seconds() מפרשת כעת את זמן הקלט כ-UTC ולא כזמן מקומי, בהתאם ל-RFC 5280. בנוסף, ערך ההחזרה הוא תמיד int.

מתודות חדשות SSLObject.shared_ciphers() ו-SSLSocket.shared_ciphers() מחזירות את רשימת הצפנים שנשלחה על ידי הלקוח במהלך לחיצת היד (handshake).

המתודות SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() ו-SSLSocket.write() של מחלקת SSLSocket אינן מאפסות עוד את פסק הזמן של השקע בכל פעם שביטים מתקבלים או נשלחים.

הפונקציה match_hostname() תומכת כעת בהתאמת כתובות IP.

sys

פונקציה חדשה set_coroutine_wrapper() מאפשרת הגדרת וו (hook) גלובלי שייקרא בכל פעם שאובייקט קורוטינה נוצר על ידי פונקציית async def. ניתן להשתמש ב-get_coroutine_wrapper() התואמת כדי לקבל את העוטף המוגדר כעת.

פונקציה חדשה is_finalizing() יכולה לשמש לבדיקה האם מפרש Python נמצא בתהליך כיבוי.

time

הפונקציה monotonic() זמינה כעת תמיד

הערות