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

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


相關推薦

2022-08-10

SQLAlchemy 是 Python SQL 工具箱和对象关系映射器,它为应用程序开发人员提供了 SQL 的全部功能和灵活性。它提供了一整套知名的企业级持久性模式,旨在高效、高性能地访问数据库,并被适配为一种简单的 Pythonic 域语言。 SQLAlche

2025-06-17

Oxlint 1.0 稳定版已正式发布。 Oxlint 是基于 Rust 的 JavaScript 和 TypeScript 静态代码分析工具,具有 500 多条 ESLint 规则且无需任何配置,性能比 ESLint 快 50~100 倍。 该项目是尤雨溪创业公司 VoidZero 开发的前端工具,VoidZero 于去年成

2023-02-12

IPython 是一个综合环境,可以帮助程序员或开发人员等高级计算机用户测试或探索各种功能。尽管 Python 附带了一个强大的交互式解释器,使用户无需在目标计算机上创建额外的文件即可运行测试,但它在用户与软件交互方面存

2022-10-15

队计划在 Beta 阶段完成大量测试,预计几个月后发布 2.0 正式版。 详情查看新功能介绍。 更新日志 | 下载地址  

2023-12-06

团队最新推出的开源项目,目标是为 PHP 引入 Python 生态,来弥补 PHP 生态的空缺和不足。phpy 使得 PHP 可以调用所有 Python 的包。 包括当下非常流行的 PyTorch、transformers、TensorFlow 

2025-06-06

开发者! 3、起飞!国产编程语言MoonBit迈进顶级学府、发布重磅LLVM后端,受邀欧美顶级大会 Part 2 :Python 的现状 Python,过去二十年当之无愧的编程巨星。凭借简洁的语法、庞大的生态、极低的学习门槛,Python 从 Web 开发到数

2023-10-18

定性、引入新的预览模式、引入 fix safety 等级,以及执行正式的版本控制策略。 新的预览模式 通过预览模式,用户可自行选择体验新功能——用于启用新规则、不稳定修复和实验性代码分析。 [tool.ruff] preview = true 引

2022-08-27

TypeScript 4.8 已正式发布。 自 Beta 和 RC 发布以来的变化 自 Beta 测试版发布以来,稳定版现已支持从自动导入中排除特定文件。测试版的公告没有提到围绕类型签名中未使用的解构别名 (destructuring aliases) 的破坏性变化。此外

2025-06-20

MoonBit 编程语言已于今日正式发布 Beta 版本。作为一门专注于工具链构建(特别是 AI 场景)与开发者体验的新一代编程语言,MoonBit 由 IDEA 研究院主导开发,自设计之初便强调结构化、类型安全与高性能可视化调试。 目前,Moo

2024-08-20

为用户提供更稳定、流畅的创新操作体验。 MoonBit自去年发布 alpha 版后,反响热烈。经过一年的高速迭代,MoonBit 到达了 beta 预览版的里程碑:在核心语言特性上,MoonBit媲美、甚至超越了大部分主流语言的1.0版本;语言特性的

2022-08-11

6 种不同的语言——包括中文。 近日,Astro 发布了 1.0 正式版。团队称 1.0 意味着 API 已达到稳定状态,并可用于生产环境。部分新特性: 图像优化:引入新的<Image />和<Picture />组件 支持 MDX:在 Markdown 中混合编

2023-04-04

ython 3.11.2,除了许多新特性和功能增强外,它还是第一个正式支持 WebAssembly 作为 PEP11 Tier 3 平台的版本。 据估计,Python 3.11 在原生执行 (native execution) 方面比 Python 3.10 快 10-60%,基准测试显示了与 WebAssembly runtime 相当的改进。

2022-05-26

NumPy 1.22.4 现已发布,这是一个维护版本,修复了在 1.22.3 版本之后发现的错误。此外,此版本的 wheels 是使用最近发布的 Cython 0.29.30 构建的,它应该可以修复报告的调试问题。 此版本支持的 Python 版本为 3.8-3.10。Mac wheels 

2022-03-14

提案的目的是让开发者能够运行用 TypeScript、Flow 或其他静态类型的 JavaScript 超集所编写的程序,而不需要转译。微软在公告中表示,新的语法将有效地起到注释作用,而不会改变代码的运行方式。 微软在提案中还表示,在过去