Python 3.5¶
以下是 Python 3.5 已定案/已接受的 PEP 清單,依其對 MicroPython 的影響分組。
語法的擴充 | 狀態 | |
額外的解包泛化 | 部分 | |
新的矩陣乘法運算子 | 完整 | |
使用 | 完整 | |
執行時的擴充與變更 | ||
二進位字串的 % 格式化 | 完整 | |
重試以 | 完整 | |
變更產生器內部的 | 完整 | |
標準函式庫變更 | ||
| ||
| 完整 | |
雜項變更 | ||
改進的 Python zip 應用程式支援 | ||
讓 Python 啟動器能識別虛擬環境 | 不相關 | |
型別提示(僅供參考) | 完整 [1] | |
消除 PYO 檔案 | 不相關 | |
重新設計擴充模組載入 | ||
其他語言變更:
新增了 namereplace 錯誤處理器。backslashreplace 錯誤處理器現在可用於解碼與轉譯。 | |
屬性的文件字串現在可寫入。這對於 collections.namedtuple() 的文件字串特別有用 | |
現在支援涉及相對匯入的循環匯入。 |
新模組:
內建模組的變更:
OrderedDict 類別現在以 C 語言實作,使其速度快 4 至 100 倍。 | |
OrderedDict.items()、OrderedDict.keys()、OrderedDict.values() 檢視現在支援 reversed() 迭代。 | |
deque 類別現在定義了 index()、insert() 和 copy(),並支援 + 和 * 運算子。 | |
namedtuple() 所產生的文件字串現在可以更新。 | |
UserString 類別現在實作了 __getnewargs__()、__rmod__()、casefold()、format_map()、isprintable() 與 maketrans() 方法,以對應 str 的相應方法。 | |
merge() 中的元素比較現在可透過在新的選用 key 關鍵字引數中傳入 key 函式來自訂,而新的選用 reverse 關鍵字引數可用於反轉元素比較 | |
新增 BufferedIOBase.readinto1() 方法,它最多對底層原始串流的 RawIOBase.read() 或 RawIOBase.readinto() 方法呼叫一次 | |
JSON 解碼器現在會引發 JSONDecodeError 而非 ValueError,以提供關於錯誤的更佳上下文資訊。 | |
math 模組新增了兩個常數:inf 與 nan。 | 完整 |
新增的 isclose() 函式提供了測試近似相等的方法。 | |
新增了 gcd() 函式。fractions.gcd() 函式現已棄用。 | |
新增了 scandir() 函式,它傳回 DirEntry 物件的迭代器。 | |
urandom() 函式現在在 Linux 3.17 或更新版本上使用 getrandom() 系統呼叫,並在 OpenBSD 5.6 及更新版本上使用 getentropy(),省去了使用 /dev/urandom 的需要並避免因潛在的檔案描述子耗盡而導致的失敗。 | |
新增的 get_blocking() 與 set_blocking() 函式允許取得與設定檔案描述子的封鎖模式(O_NONBLOCK)。 | |
新增了 os.path.commonpath() 函式,傳回各傳入路徑名稱中最長的共同子路徑 | |
現在於後行斷言中允許對固定長度群組的參考與條件參考 | |
正規表示式中擷取群組的數量不再限制為 100 個。 | |
sub() 與 subn() 函式現在以空字串取代未比對到的群組,而非引發例外。 | |
re.error 例外具有新的屬性 msg、pattern、pos、lineno 與 colno,可提供關於錯誤的更佳上下文資訊 | |
具有逾時的函式現在使用單調時鐘,而非系統時鐘。 | |
新增的 socket.sendfile() 方法允許透過在 UNIX 上使用高效能的 os.sendfile() 函式來透過通訊端傳送檔案,使上傳速度比使用普通的 socket.send() 快 2 至 3 倍 | |
socket.sendall() 方法不再於每次接收或傳送位元組時重設通訊端逾時。通訊端逾時現在是傳送所有資料的最大總時長。 | |
socket.listen() 方法的 backlog 引數現在是選用的。預設會設為 SOMAXCONN 或 128,取較小者。 | 完整 |
記憶體 BIO 支援 | |
應用層協定協商支援 | |
新增的 SSLSocket.version() 方法可查詢實際使用中的協定版本。 | |
SSLSocket 類別現在實作了 SSLSocket.sendfile() 方法。 | |
SSLSocket.send() 方法現在於非封鎖通訊端上,若操作會造成封鎖,便會引發 ssl.SSLWantReadError 或 ssl.SSLWantWriteError 例外。先前它會傳回 0。 | |
cert_time_to_seconds() 函式現在依 RFC 5280 將輸入時間解讀為 UTC 而非當地時間。此外,傳回值一律為 int。 | |
新增的 SSLObject.shared_ciphers() 與 SSLSocket.shared_ciphers() 方法傳回用戶端在握手期間所傳送的加密套件清單。 | |
SSLSocket 類別的 SSLSocket.do_handshake()、SSLSocket.read()、SSLSocket.shutdown() 與 SSLSocket.write() 方法不再於每次接收或傳送位元組時重設通訊端逾時。 | |
match_hostname() 函式現在支援 IP 位址的比對。 | |
新增的 set_coroutine_wrapper() 函式允許設定一個全域掛鉤,每當 async def 函式建立協程物件時便會被呼叫。相應的 get_coroutine_wrapper() 可用於取得目前所設定的包裝器。 | |
新增的 is_finalizing() 函式可用於檢查 Python 直譯器是否正在關閉。 | |
monotonic() 函式現在一律可用 | |
備註