Python3.11穩(wěn)定版本發(fā)布,或許是最好的版本
Python 3.11 穩(wěn)定版本已正式發(fā)布!

Python 以速度慢著稱,例如在 Python 中,常規(guī)循環(huán)比 C 中的類似循環(huán)慢幾個(gè)數(shù)量級(jí)。
Python 官方正在著手改進(jìn)這一缺陷。2020 年秋,Mark Shannon 提出了關(guān)于 Python 的幾個(gè)性能改進(jìn)。這個(gè)提議被稱為香農(nóng)計(jì)劃 (Shannon Plan),他們希望通過(guò)幾個(gè)版本的更新將 Python 的速度提高 5 倍。不久之后微軟正式加入該計(jì)劃,該公司正在支持包括 Mark Shannon、Guido van Rossum 在內(nèi)的開(kāi)發(fā)人員,致力于「Faster CPython」項(xiàng)目的研究。
「Faster CPython」項(xiàng)目中的一個(gè)重要提案是 PEP 659,在此基礎(chǔ)上,Python 3.11 有了許多改進(jìn)。
PEP 659 描述了一種「specializing adaptive interpreter」。主要思想是通過(guò)優(yōu)化經(jīng)常執(zhí)行的操作來(lái)加快代碼運(yùn)行速度, 這類似于 JIT(just-in-time)編譯。只是它不影響編譯,相反,Python 的字節(jié)碼是動(dòng)態(tài)調(diào)整或可更改的。
Python被廣泛認(rèn)為是緩慢的。雖然 Python 永遠(yuǎn)無(wú)法達(dá)到 C、Fortran 甚至 Java 等低級(jí)語(yǔ)言的性能,但我們希望它的速度能夠與腳本語(yǔ)言競(jìng)爭(zhēng),例如用于 Javascript 的 V8 或用于 lua 的 luajit。我們希望通過(guò) CPython 實(shí)現(xiàn)這些性能目標(biāo),以使所有 Python 用戶受益,包括那些無(wú)法使用 PyPy 或其他替代虛擬機(jī)的用戶。
Python 3.11 中的一些新的主要新特性和變化包括:
一般變化
PEP 657 – 在錯(cuò)誤信息報(bào)告中引入細(xì)粒度的 Error Locations
PEP 654 – Exception Groups and except*
PEP 680 - tomllib:支持在標(biāo)準(zhǔn)庫(kù)中解析 TOML
bpo-46752 – 將任務(wù)組引入 asyncio
bpo-433030 – 正則表達(dá)式現(xiàn)在支持原子分組 (Atomic grouping):((?>...)),以及占有型量詞 (
*+, ++, ?+, {m,n}+)Faster Cpython Project 已經(jīng)出現(xiàn)了一些令人振奮的結(jié)果:Python 3.11 比 Python 3.10 快 10%~60%。
Typing changes
PEP 673 - Self 類型
PEP 655 - 將單個(gè) TypedDict 項(xiàng)目標(biāo)記為必需或可能缺失
PEP 675 - 任意文字字符串類型
PEP 681 - Data Class 轉(zhuǎn)換
PEP 646 - 可變參數(shù)泛型 (Variadic Generics)

推薦閱讀
【2022新書】深度學(xué)習(xí)R語(yǔ)言實(shí)戰(zhàn),568頁(yè)電子書 用數(shù)學(xué)和Python入門機(jī)器學(xué)習(xí)核方法 · 電子書 超全干貨2萬(wàn)字全文!李航《統(tǒng)計(jì)學(xué)習(xí)方法》讀書筆記 《機(jī)器學(xué)習(xí)算法與Python實(shí)戰(zhàn)》:搭建機(jī)器學(xué)習(xí)開(kāi)發(fā)環(huán)境
