微软推出了Pyright ,这是一种用于Python的开源静态类型检查系统,旨在比现有的Python类型检查解决方案(例如Mypy)更快。
Pyright用TypeScript编写并运行在Node.js上,不需要现有的Python运行时。 它主要设计用作Visual Studio Code插件,但也可以作为独立的命令行工具运行。
微软在该项目的自述文件中声称,Pyright比其他本身用Python编写的Python类型检查器(例如Mypy,Pytype和Pyre)“通常快5倍”。 用Python编写这些工具很方便,但是它们只能像Python本身一样快地运行,并且Python的默认运行时并不强调性能。 也就是说,这些工具的性能并非绝对。 它主要取决于他们运行的系统以及他们分析的代码库。
Pyright支持Python当前可用的所有主要类型提示和与类型相关的语法- 类型提示 , 变量符号语法和结构子类型 。 在许多情况下,它还支持类型推断。 该项目依靠Python自己的类型存根信息来执行其分析,因此即使它不是用该语言编写的,它也可以与Python本身保持同步。
作为Visual Studio Code插件运行时,它会提供有关代码的实时反馈-通过工具提示,符号定义链接等显示的类型信息。 Pyright在这方面提供的某些功能与Microsoft的Python Language Server提供的功能有些重叠,但是Pyright的主要重点是类型检查而不是其他代码替换功能。
该项目仍被认为是一项正在进行的工作,许多功能都列为未完成或待办事项,例如生成器的类型推断或async/await
声明的验证。 明确未计划的一项功能是对Python 2的支持。 微软无意提供它。 相比之下,Mypy和其他许多用于Python的代码删除和类型检查工具都提供了它。
用于Python的类型检查系统主要是为了确保程序在运行时的正确性,而不是为了加快Python应用程序的速度。 但是,确实有一些项目试图将带类型注释的Python编译为性能更高的语言。 例如, Mypyc会将带有类型注释的Python编译为C。Pyright可以及时用作类似项目的基础。
From: https://www.infoworld.com/article/3379122/microsoft-unveils-speedy-type-checker-for-python.html