Python 3.6¶
Python 3.6 beta 1 於 2016 年 9 月 12 日發布,新功能摘要可在此處找到:
新語法功能 |
狀態 |
|
字面字串格式化 |
已完成 |
|
數值字面值中的底線 |
已完成 |
|
非同步產生器 |
||
變數註解語法(暫定) |
已完成 |
|
非同步生成式 |
||
新內建功能 |
||
保留函式中 kwargs 的順序 |
||
更簡單的類別建立自訂方式 |
部分支援 [1] |
|
保留類別屬性定義順序 |
||
標準函式庫變更 |
||
本地時間消歧義 |
||
在標準函式庫中加入 secrets 模組 |
||
加入檔案系統路徑協定 |
||
CPython 內部機制 |
||
為 dict 加入私有版本號 |
不會實作 |
|
為 CPython 加入影格評估 API |
||
Linux/Windows 變更 |
||
讓 |
||
將 Windows 主控台編碼改為 UTF-8 |
||
將 Windows 檔案系統編碼改為 UTF-8 |
||
其他語言變更:
global 或 nonlocal 陳述式現在必須在文字上出現於同一作用域中受影響名稱第一次使用之前。先前這只是一個 SyntaxWarning。 |
|
現在可以將特殊方法設為 None,以表示對應的操作不可用。例如,若某類別將 __iter__() 設為 None,則該類別不可迭代。 |
|
重複的回溯行若連續出現過長,現在會被縮寫為 [Previous line repeated {count} more times] |
|
當 import 找不到模組時,現在會引發新例外 ModuleNotFoundError。目前在 try-except 中檢查 ImportError 的程式碼仍可正常運作。 |
|
在類別建立期間,從 metaclass 方法呼叫時,依賴零引數 super() 的類別方法現在能正確運作。 |
內建模組的變更:
已耗盡的 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__ 屬性。 |
|
namedtuple() 的 verbose 與 rename 引數現在僅限關鍵字。 |
|
遞迴的 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() 迭代器現在支援情境管理器協定。 |
|
在 Linux 上,os.urandom() 現在會阻塞直到系統 urandom 熵池初始化完成,以提高安全性。 |
|
Linux 的 getrandom() 系統呼叫(取得隨機位元組)現在透過新的 os.getrandom() 函式公開。 |
|
新增對正規表示式中修飾範圍的支援。範例:'(?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 控制碼。 |
|
現在支援 getsockopt() 常數 SO_DOMAIN、SO_PROTOCOL、SO_PEERSEC 與 SO_PASSSEC。 |
|
setsockopt() 現在支援 setsockopt(level, optname, None, optlen: int) 形式。 |
|
socket 模組現在支援位址族 AF_ALG,以介接 Linux 核心的 crypto API。新增了 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。 |
|
新增了適用於 SSLContext 的伺服器端與用戶端特定 TLS 協定。 |
|
新增了 SSLContext.post_handshake_auth 以啟用,以及 ssl.SSLSocket.verify_client_post_handshake() 以發起 TLS 1.3 交握後驗證。 |
|
現在透過 'e' 格式指示符支援 IEEE 754 半精度浮點數。 |
|
新的 getfilesystemencodeerrors() 函式會傳回用於在 Unicode 檔名與位元組檔名之間轉換時所使用的錯誤模式名稱。 |
|
compress() 與 decompress() 函式現在接受關鍵字引數 |
|
註解