1. Python类型检查工具测试
本文参考了资料1,简单测试这四种类型检查工具
1.1. pytype
pytype是谷歌非官方出品,需要Python2.7或3.5+环境,暂不支持Windows
1.1.1. 安装和使用命令
pip install pytype
pytype file_or_directory
1.2. pyre-check
Facebook出品,需要Python3.5+环境,暂不支持Windows
1.2.1. 安装命令
pip install pyre-check
1.2.2. 使用说明
在项目根目录下,执行以下命令
pyre init
pyre
1.3. pyright
Pyright是微软出品的,只支持Python3.0+版本,支持Windows,但是对文件夹的支持有问题。
1.3.1. 安装命令
Pyright安装不需要Python环境,因为它是用TypeScript写的,所以需要使用Node.js的npm
进行安装。在Linux和MacOS安装需要使用sudo
。
npm install -g pyright
1.3.2. 使用说明
- 检查单个文件,直接使用
pyright file
即可 - 检查文件夹需要使用配置文件,详情见官网样例
1.4. mypy
mypy由Python官方推出,需要Python3.5+环境,支持Windows。
1.4.1. 安装和使用命令
pip install mypy
mypy PROGRAM
1.5. 测试代码
- test1.py:字符串不能和整数相加
def f():
return "PyCon"
def g():
return f() + 2019
- test2.py:函数返回值为int时,不能返回str
def foo() -> int:
return ""
- test3.py:字符串不能和整数相加
a = True
if a:
a = 1
else:
a = 'a'
print(a + 'b')
- test4.py: 字符串相乘应该是整数
num = 5 / 2
print('a' * num)
1.6. 测试结果
工具 | test1.py | test2.py | test3.py | test4.py |
---|---|---|---|---|
pytype | 支持 | 支持 | 支持 | 支持 |
pyre-check | 不支持 | 支持 | 支持 | 支持 |
pyright | 支持 | 支持 | 支持 | 不支持 |
mypy | 不支持 | 支持 | 支持 | 支持 |
综合比较后pytype检查能力最好。