python 的常用工具(Python静态类型检查新工具之pyright 使用指南)
python 的常用工具
Python静态类型检查新工具之pyright 使用指南python是一门动态类型的语言,民间流传一种说法叫”动态一时爽,重构火葬场”,听起来够吓人的,好在这门语言在不断地改进,包括对 pep484 引入的类型提示(type hint),就是在某种程度上,让python能够像静态语言一样支持类型声明,例如:
|
def greeting(name: str ) - > str : return 'hello ' + name |
这就意味着,如果有人调用 greeting函数的时候,传入的参数不是字符串,你用静态类型检查工具一下就能查出来哪些地方没有传入正确类型的值。而 pyright 就是为此而生。
pyright 核心特性:
- typescript 编写,速度快
- 不依赖python环境
- 可配置性强
我们可以直接在 vscode 搜索安装插件 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中会直接有错误提示信息:
如果我们用 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
提示有两处问题:
- function with declared type of str must return value (1, 28),函数声明返回str类型的值,但是却没有返回
- 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 使用指南,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!原文链接:https://foofish.net/pyright.html
- python核心编程和python基础教程(从0开始的Python学习014面向对象编程推荐)
- python中匿名函数关键字(浅谈python之高阶函数和匿名函数)
- python创建进程的方法(Python多进程fork函数详解)
- python如何抓取公众号文章(python爬取微信公众号文章的方法)
- python闭包的讲解(详解python函数的闭包问题内部函数与外部函数详述)
- 如何对python中列表中的数据运算(Python3.5集合及其常见运算实例详解)
- pythonmatplotlib绘制立体图形(python3使用matplotlib绘制散点图)
- python 循环遍历新方法(python for 循环获取index索引的方法)
- python数据结构全攻略(详解python数据结构和算法)
- python 装饰器模式(python重试装饰器的简单实现方法)
- python列表反转的方法(Python实现的列表排序、反转操作示例)
- pythonjpg转pdf格式(Python使用到第三方库PyMuPDF图片与pdf相互转换)
- python 二叉树的深度遍历(python 将有序数组转换为二叉树的方法)
- python3和python2 兼容(Python2和Python3的共存和切换使用)
- python模块化打包(python使用Paramiko模块实现远程文件拷贝)
- 怎么在当前目录调用python库(Python父目录、子目录的相互调用方法)
- 营养餐是什么(学校营养餐是什么)
- 谁说女子不如男 范冰冰演的武则天只是其一,另外两位你认识吗(谁说女子不如男)
- 杯酒人生---瓦伦丁酒杯和奥丁格啤酒(杯酒人生---瓦伦丁酒杯和奥丁格啤酒)
- 中秋节买啤酒,预算超过7元试试这8种啤酒,麦香浓郁都是真啤酒(预算超过7元试试这8种啤酒)
- CellPress旗下的6 期刊,国人友刊来了解一下吧(CellPress旗下的6期刊国人友刊来了解一下吧)
- ()
热门推荐
- sql怎么把表移到另一个数据库中(sql存储过程实例--动态根据表数据复制一个表的数据到另一个表)
- html怎么去除css边框(Html/CSS前端实现文字边框阴影效果)
- pythondjango搭建web(PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上)
- 实用的Visual Studio插件
- vsftpd详细教程(编译安装 vsFTP 3.0.3的详细解析)
- ASP.NET Web API是什么
- python中的迭代器详解(Python通过for循环理解迭代器和生成器实例详解)
- jquery操作table
- sqlserver2012海量数据查询(SQL Server 2012 多表连接查询功能实例代码)
- python微信红包代码(php生成微信红包数组的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9