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 pandas dataframe 查询(Python实现从SQL型数据库读写dataframe型数据的方法基于pandas)
- python mysql配置(详解python校验SQL脚本命名规则)
- python函数使用方法高级用法(Python函数的参数常见分类与用法实例详解)
- pythonselenium查看当前页面元素(python+selenium 定位到元素,无法点击的解决方法)
- python类继承和封装(Python面向对象程序设计类的封装与继承用法示例)
- python抽奖代码教程(python实现抽奖小程序)
- python用于机器人(python机器人运动范围问题的解答)
- 如何学会python多线程(Python3多线程基础知识点)
- python识别验证码教程(Python3.5 + sklearn利用SVM自动识别字母验证码方法示例)
- python零基础实战项目(十个Python练手的实战项目,学会这些Python就基本没问题了推荐)
- python将一个字符串逆序输出(Python字符串逆序的实现方法一题多解)
- python编写程序读写数据库(详解js文件通过python访问数据库方法)
- python最简单实例(Python文件打开方式实例详解a、a+、r+、w+区别)
- python利用空列表进行数字排序(python实现计数排序与桶排序实例代码)
- python怎么去掉字符串的空格(Python切片操作去除字符串首尾的空格)
- 100道python真实面试题附答案(值得收藏的10道python 面试题)
- 以前全椒人是怎么过冬的 满满都是回忆(以前全椒人是怎么过冬的)
- NVIDIA显卡份额冲上88 A饭发愁 游戏优化恐没A卡份了(NVIDIA显卡份额冲上88A饭发愁)
- AMD YES A卡还是N卡 A卡和N卡的区别(AMDYESA卡还是N卡)
- 以后显卡多了一个新选择,N卡和A卡外又多了个I卡(以后显卡多了一个新选择)
- 读卖乐园的彩灯(读卖乐园的彩灯)
- 新疆80后在淘宝卖干果 以前是 不务正业 如今帮乡亲致富(新疆80后在淘宝卖干果)
热门推荐
- mysql 操作日志(MySQL中的undo日志)
- docker容器内服务怎么启动(docker部署confluence的完整步骤)
- mysql用户授权的步骤(mysql创建用户并赋予用户权限详细操作教程)
- 移动web跨端开发领域(Web移动端布局那些事)
- python操作sql server数据库(Python 数据库操作 SQLAlchemy的示例代码)
- nginx配置ip端口访问(Nginx配置80端口访问8080及项目名地址方法解析)
- docker怎样安装mysql8(docker-compose安装db2数据库操作)
- php 经典模式(php设计模式之装饰模式应用案例详解)
- php 获取get url(PHP实现获取url地址中顶级域名的方法示例)
- Request.Url的值有可能会带端口号
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9