技术学习分享_一航技术 技术资讯 mypy 1.0 正式发布,Python 静态类型检查器

mypy 1.0 正式发布,Python 静态类型检查器

广告位

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()

详细更新说明查看发布公告

展开阅读全文
本文来自网络,不代表技术学习分享_一航技术立场,转载请注明出处。

作者: 一航技术

上一篇
下一篇
广告位

发表回复

返回顶部