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简易翻译器的运行(Python3.6实现带有简单界面的有道翻译小程序)
- python 配置文件环境变量(python环境路径配置以及命令行运行脚本)
- python数字图像处理入门(python图像处理入门一)
- python统计字符类型和数量(python统计中文字符数量的两种方法)
- pythonimage库(Python/Django后端使用PIL Image生成头像缩略图)
- ocr公式识别python(初探利用Python进行图文识别OCR)
- pythonexcel报表实例(对python生成业务报表的实例详解)
- python中startswith使用教程(Python os.access用法实例)
- 虚拟环境python详细教程(python创造虚拟环境方法总结)
- python 内存读写(详解python持久化文件读写)
- 学python从零基础到开发游戏(python开发游戏的前期准备)
- python单例编程(浅谈Python反射 & 单例模式)
- python如何编写定时器(python 定时器,轮询定时器的实例)
- python进程管理教程(Python I/O与进程的详细讲解)
- python代码词频分析(python实现词法分析器)
- python自动解数独教学(Python判断有效的数独算法示例)
- OPPO用户看过来 汇总几个春节实用技巧,轻松搞定多设备联动玩法(汇总几个春节实用技巧)
- 北京旅游攻略(北京旅游攻略5日游及其花费)
- 四川旅游攻略(四川旅游攻略自由行攻略)
- 上海迪士尼攻略(上海迪士尼攻略旅游)
- 哪里可以看熊猫(成都哪里可以看熊猫)
- oppo手机的三种录屏方法,你知道有哪些吗(oppo手机的三种录屏方法)
热门推荐
- vue 中后台管理系统(Vue实现学生管理功能)
- docker 运行容器命令详细参数详解(Docker Hub运行原理及实现过程解析)
- 云服务器常见的哪几种(新手如何选择合适的云服务器?)
- nginx配置静态资源访问(nginx 多个location转发任意请求或访问静态资源文件的实现)
- 相对布局和线性布局的区别(面试必问:圣杯布局和双飞翼布局的区别)
- h5抽奖的弹框制作(html5实现九宫格抽奖可固定抽中某项奖品)
- python高级面试题及答案(python面试题小结附答案实例代码)
- jquery轮播图的左右按钮(jQuery轮播图功能实现方法)
- python的几种数据结构(python中的数据结构比较)
- secure file(解决出现secure_file_priv null的问题)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9