Python静态类型检查新工具之pyright 使用指南


Posted in Python onApril 26, 2019

Python是一门动态类型的语言,民间流传一种说法叫”动态一时爽,重构火葬场”,听起来够吓人的,好在这门语言在不断地改进,包括对 PEP484 引入的类型提示(Type Hint),就是在某种程度上,让Python能够像静态语言一样支持类型声明,例如:

def greeting(name: str) -> str:
 return 'Hello ' + name

这就意味着,如果有人调用 greeting函数的时候,传入的参数不是字符串,你用静态类型检查工具一下就能查出来哪些地方没有传入正确类型的值。而 pyright 就是为此而生。

pyright 核心特性:

  • TypeScript 编写,速度快
  • 不依赖Python环境
  • 可配置性强

我们可以直接在 vscode 搜索安装插件 pyright

Python静态类型检查新工具之pyright 使用指南

命令行工具可以使用 npm 安装

sudo npm i -g pyright

如何使用pyright

假设有个python文件 hello.py,里面代码是:

def greeting2(age:int) -> str:
 print("hello")
greeting2("nihao")
greeting2(1)

注意我给greeting2中的参数类型声明是int,返回的返回值是字符串类型,但是在函数中并没有看到return 返回值。直接运行该文件不会有任何错误

python hello.py
hello
hello

在VSCode中会直接有错误提示信息:

Python静态类型检查新工具之pyright 使用指南

如果我们用 pyright 检查代码,输出信息:

pyright hello.py
Finding source files
Found 1 source files
Analyzed 1 file in 1.546sec
/Users/xxxx/Workspace/My/draft/hello.py
  Function with declared type of str must return value (1, 28)
  Argument of type 'str' cannot be assigned to parameter of type 'int' (4, 11)
2 errors, 0 warnings
Find Source Files:    0.001sec
Read Source Files:    0.012sec
Tokenize:             0.085sec
Parse:                0.17sec
Post-parse Walker:    0.147sec
Semantic Analyzer:    0.293sec
Type Analyzer:        0.766sec

提示有两处问题:

  1. Function with declared type of str must return value (1, 28),函数声明返回str类型的值,但是却没有返回
  2. Argument of type 'str' cannot be assigned to parameter of type 'int' (4, 11), 字符串值不能复制给int类型参数

剩下的事情就是按照错误提示修正, 正如 PEP484 所说的那样,Type Hint is not role , is tool。 它并不是规则,只是一个工具,帮助我们规避某些错误。即使你传错了参数,程序编译时并不会报错,只有执行到具体的业务代码的时候才会出错。

GitHub地址:https://github.com/Microsoft/pyright

总结

以上所述是小编给大家介绍的Python静态类型检查新工具之pyright 使用指南,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
numpy使用技巧之数组过滤实例代码
Feb 03 Python
python实现简易内存监控
Jun 21 Python
利用Django-environ如何区分不同环境
Aug 26 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
python处理大日志文件
Jul 23 Python
利用python-pypcap抓取带VLAN标签的数据包方法
Jul 23 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
Python过滤序列元素的方法
Jul 31 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 #Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 #Python
Python 2/3下处理cjk编码的zip文件的方法
Apr 26 #Python
实例详解Matlab 与 Python 的区别
Apr 26 #Python
Python生成MD5值的两种方法实例分析
Apr 26 #Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 #Python
Python生成rsa密钥对操作示例
Apr 26 #Python
You might like
php实现递归抓取网页类实例
2015/04/03 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
图片完美缩放
2006/09/07 Javascript
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
详解小程序循环require之坑
2019/03/08 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
vue实现购物车小案例
2019/09/27 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
python实现Zabbix-API监控
2018/09/17 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
新闻专业推荐信范文
2013/11/20 职场文书
写给女朋友的道歉信
2014/01/12 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
假期读书倡议书3篇
2019/08/19 职场文书