mypy 1.0 正式发布,Python 静态类型检查器
mypy 是 Python 静态类型检查器,旨在结合动态类型和静态类型的优点,将 Python 的表现力和便利性与强大的类型系统和编译时 (compile-time) 类型检查相结合,提供编译时的类型检查和高效地编译为原生代码,无需使用重量级和耗费 runtime 开销的 Python 虚拟机。近日,mypy 正式发布了 1.0 版本,引入了新特性、优化了性能以及修复错误等。主要变化采用新的版本号
mypy 是 Python 静态类型检查器,旨在结合动态类型和静态类型的优点,将 Python 的表现力和便利性与强大的类型系统和编译时 (compile-time) 类型检查相结合,提供编译时的类型检查和高效地编译为原生代码,无需使用重量级和耗费 runtime 开销的 Python 虚拟机。
近日,mypy 正式发布了 1.0 版本,引入了新特性、优化了性能以及修复错误等。
主要变化
- 采用新的版本号命名规则
由于 mypy 版本号已进入 1.0 阶段,因此开发团队决定切换到新的版本号命名规则,新规则将采用 x.y.z. 格式:
- 如果功能版本包含影响大部分用户的重大向后不兼容性变更,则主版本号 (x) 会递增
- 每个功能版本都会增加次要版本号 (y)
- 当仅存在修复时,小版本号 (z) 会递增
详细说明。
- 优化性能
团队介绍道,在检查 Dropbox 内部代码库时,他们发现 mypy 1.0 的速度比 mypy 0.991 快 40%。他们还设置了一个日常工作来衡量 mypy 最新开发版本的性能,以便更容易跟踪性能变化。
部分优化项包括:
- 提升具备许多属性的类错误的性能
- 加速 make_simplified_union
- 针对语义分析器的微优化
- 加速递归类型检查
- 加速刷新类型变量
- 通过避免嵌套函数优化子类型检查
- 优化子类型检查中的类型参数检查
点此查看详情。
- 支持 "self" 类型
现在有一个更简单的语法来声明 PEP 673 中引入的通用 self 类型:Self 类型。开发者不再需要定义类型变量来使用 "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()
详细更新说明查看发布公告。
相关文章
- 淘宝正式宣布接入微信支付,电商巨头合作引发热议!支付宝地位会受影响吗?
- 中国航空新篇章!国航、南航正式迎来首架国产C919飞机!
- 中国自动驾驶巨头文远知行,正式启动赴美IPO之旅,能否引领自动驾驶新篇章?
- 华为正式进军游戏笔记本领域,华为游戏本ChinaJoy曝光.
- AMD锐龙9000系列,性能怪兽即将来袭!7月31日正式上市,你准备好了吗?
- 上海无驾驶人智能网联汽车正式上路,价格亲民仅需16元
- 红魔9S Pro正式发布了,这款手机可是首发骁龙8 Gen 3领先版哦
- 华为MatePad SE新品正式开启预售,千元价格就能买到性能卓越的平板
- 官宣!巴南高铁将于6月27日正式开通,成都到巴中只需2小时16分!
- 苹果Vision Pro国行版正式开售,这款开启空间计算时代的产品终于来到中国!