mypy 1.0 正式發(fā)布,Python 靜態(tài)類型檢查器
mypy 是 Python 靜態(tài)類型檢查器,旨在結(jié)合動態(tài)類型和靜態(tài)類型的優(yōu)點,將 Python 的表現(xiàn)力和便利性與強(qiáng)大的類型系統(tǒng)和編譯時 (compile-time) 類型檢查相結(jié)合,提供編譯時的類型檢查和高效地編譯為原生代碼,無需使用重量級和耗費 runtime 開銷的 Python 虛擬機(jī)。
近日,mypy 正式發(fā)布了 1.0 版本,引入了新特性、優(yōu)化了性能以及修復(fù)錯誤等。
主要變化
- 采用新的版本號命名規(guī)則
由于 mypy 版本號已進(jìn)入 1.0 階段,因此開發(fā)團(tuán)隊決定切換到新的版本號命名規(guī)則,新規(guī)則將采用 x.y.z. 格式:
- 如果功能版本包含影響大部分用戶的重大向后不兼容性變更,則主版本號 (x) 會遞增
- 每個功能版本都會增加次要版本號 (y)
- 當(dāng)僅存在修復(fù)時,小版本號 (z) 會遞增
詳細(xì)說明。
- 優(yōu)化性能
團(tuán)隊介紹道,在檢查 Dropbox 內(nèi)部代碼庫時,他們發(fā)現(xiàn) mypy 1.0 的速度比 mypy 0.991 快 40%。他們還設(shè)置了一個日常工作來衡量 mypy 最新開發(fā)版本的性能,以便更容易跟蹤性能變化。
部分優(yōu)化項包括:
- 提升具備許多屬性的類錯誤的性能
- 加速 make_simplified_union
- 針對語義分析器的微優(yōu)化
- 加速遞歸類型檢查
- 加速刷新類型變量
- 通過避免嵌套函數(shù)優(yōu)化子類型檢查
- 優(yōu)化子類型檢查中的類型參數(shù)檢查
點此查看詳情。
- 支持 "self" 類型
現(xiàn)在有一個更簡單的語法來聲明 PEP 673 中引入的通用 self 類型:Self 類型。開發(fā)者不再需要定義類型變量來使用 "self" 類型,并且可以將它們與屬性搭配使用。mypy 文檔中的示例:
from typing import Self class Friend: other: Self | None = None @classmethod def make_pair(cls) -> tuple[Self, Self]: a, b = cls(), cls() a.other = b b.other = a return a, b class SuperFriend(Friend): pass # a and b have the inferred type "SuperFriend", not "Friend" a, b = SuperFriend.make_pair()
詳細(xì)更新說明查看發(fā)布公告。
版權(quán)聲明:
本站所有文章和圖片均來自用戶分享和網(wǎng)絡(luò)收集,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請勿用于商業(yè)用途,如果損害了您的權(quán)利,請聯(lián)系網(wǎng)站客服處理。