建设一个网站要多少费用吗,网站 禁止ping,百度地图人工服务,马拉松网站建设方案介绍
近日#xff0c;微软在 Github 上开源了一个 Python 静态类型检查工具#xff1a;pyright #xff0c;引起了社区内的多方关注。
微软在开源项目上的参与力度是越来越大了#xff0c;不说收购 Github 这种大的战略野心#xff0c;只说它家开源的 VS Code 编辑器微软在 Github 上开源了一个 Python 静态类型检查工具pyright 引起了社区内的多方关注。
微软在开源项目上的参与力度是越来越大了不说收购 Github 这种大的战略野心只说它家开源的 VS Code 编辑器在猿界已割粉无数连我 Python 圈的红人 Kenneth Reitz多个开源项目的作者包括 requests、requests-html、responder等都对它赞不绝口。
如今开源的 Pyright 口碑还不错那我们就来看看它有啥本事顺便再介绍其它几款类型检查工具。
众所周知Python 是一门动态类型语言在运行期才知道变量的实际类型。这本就是动态语言的特色然而在团队合作或大型项目上维护的代价也不可避免俗话说的是“动态一时爽重构火葬场 ”。
早在 2006 年的 PEP-3107Python 就推出了函数注解的功能最终落在 3.0 版本实现。而到了 3.5 版本Python 继续引入了静态类型检查的语法即 PEP-484type hints。2014 年的 PEP-483 更是以《The Theory of Type Hints》为题做出了理论上的归纳。后来又陆续提出了 PEP-526、PEP-544类型检查的规范逐渐丰富。
类型检查的好处是及早检查提前发现类型的错误增强代码的一致性与可维护性。还有防止脱发喵 # 不加检查 def greeting(name): return Hello name # 添加检查 def greeting(name: str) - str: return Hello name 如上例所示增加检查后可以在编译期就判断入参和返回值是否是字符串类型。例如下图 在微软推出 pyright 之前主流的静态检查工具有三款官方的mypy 、Google 出的pytype 、Facebook 出的pyre-check 。三足鼎立的局面要被打破了。
pyright 的文档宣称它有如下特点 速度快。相较于 mypy 及其它用 Python 写的检查工具它的速度是 5 倍甚至更多。 不依赖 Python 环境。它用 TypeScript 写成运行于 node 上不依赖 Python 环境或第三方包。 可配置性强。支持自由地配置支持指定不同的运行环境PYTHONPATH 设置、Python 版本、平台目标。 检查项齐全。支持类型检查及其它语法项的检查如 PEP-484、PEP-526、PEP-544以及函数返回值、类变量、全局变量的检查甚至可以检查条件循环语句 命令行工具。它包含两个 VS Code 插件一个命令行工具和一个语言服务器协议Language Server Protocol 内置 Stubs 。使用的是 Typeshed 的副本。注使用静态的 pyi 文件检查内置模块、标准库和三方件 语言服务特性。悬停提示信息、符号定义的跳转、实时的编辑反馈
就此而言不可谓不强大。事实上pyright 是“站在了巨人的肩膀上”它的各项功能似乎都继承自其它几位前辈。
接着看官方的 mypy 它由“Python 之父” Guido van Rossum 亲自参与开发是最主流的选择推出得早用户基数大文档与社区经验也最丰富。
在集成 IDE 方面所有主流的编辑器都支持PyCharm、Vim、Emacs、Sublime Text、VS Code、Atom……在业界经验上Instagram 和 Dropbox 的项目从 py2 迁移到 py3 就是用的它来做保障。
接着看谷歌的 pytype 据文档描述它可以 标记常见错误如拼写错误、函数调用错误 加强自定义的类型注解 支持对 pyi 文件生成类型注解
查看文档我发现它有个功能还挺人性化的即“错误降噪 ”对于那些不必修改的错误可以添加注释来消除类型检查。
此外还有一个考虑也不错为了写类型检查模块中可能会额外引入其它的模块对于后者pytype 有办法隐藏它只在做类型检查时才加载。
最后要介绍的是脸书的 pyre-check它是去年开源的也曾收获一片好评说不定正是因为它微软才上马了 pyright 项目也说不定。
基本的功能点大同小异不过它也是有亮点的。pyre-check 可集成Watchman 模块该“观察者”会监听代码文件跟踪所做的修改。微软的 pyright 有个 watch 模式应该是吸收了这点而且更加好用因为不需要额外安装 Watchman 和其它依赖。
pyre-check 还有个亮点它有个query 参数可以对源码做局部区域性的检查例如查询某行中一个表达式的类型、查询一个类的全部方法并返回成列表等等这样可以避免做全面的检查。
4 种类型检查工具介绍完毕下面是一份概要对比
至于它们的性能如何是否真如 pyright 所说它的速度是其它几个的 5 倍呢感兴趣的同学们可以去试试。有什么使用体会欢迎留言与我交流。 使用限制
Pyright目前仅提供对Python 3.0及更高版本的支持且目前没有支持旧版本的计划。
FAQ
QPyright和Microsoft Python VS Code插件有什么区别
APython VS Code插件是VS Code的官方Python支持扩展。 它由Microsoft的工程师团队提供官方支持。 它支持各种功能包括调试、linter插件、类型检查插件等等。 Pyright完全专注于类型检查。 这是一个没有专门团队的次要项目。
QPyright和Microsoft Python语言服务器有什么区别
AMicrosoft Python语言服务器是一种语言服务器协议LSP实现可以和Microsoft Python VS Code插件配合使用并由Microsoft工程师团队提供官方支持。 它还提供类型检查功能。 Pyright提供了与之重复的功能但包括了一些独特的功能如可配置性更高、命令行执行和更好的性能。
安装
你可以直接从VS Code安装最新发布的Pyright VS Code扩展版本。只需打开扩展程序面板并搜索 pyright 即可。
最新版本的命令行工具可以使用npm命令 npm i pyright 进行安装
全局安装npm i -g pyright
运行命令行工具npx pyright options
构建说明
要构建项目请注意以下事项
安装nodejs
在克隆源的主目录中打开终端窗口
执行 npm run install:all 来安装依赖项
执行 npm run build
构建VS Code扩展包请注意以下事项
步骤与以上部分相同但是需要再加一个步骤
执行 npm run package
生成的包pyright-X.Y.Z.vsix可以在客户端目录中找到。如需在VS Code中安装请转到扩展面板然后从菜单中选择“从VSIX安装...”然后选择对应的包即可。
项目地址
https://github.com/python/mypy
https://github.com/Microsoft/pyright
https://github.com/google/pytype
https://github.com/facebook/pyre-check
参考
http://t.cn/EiQWiGD
http://3g.163.com/dy/article/EB50P5GI0511DPVD.html