目录:
pyright 模块是由微软开发的静态代码检查工具,能在代码运行前识别出类型错误,类似前端的 Typescript。
例如,当函数期望接收浮点数却传入字符串时,Pyright会立即提示类型错误。
安装依赖:
$ pip install pyright -i https://pypi.tuna.tsinghua.edu.cn/simple
如果使用 VS Code,可以安装 Pylance 插件,内置了 Pyright 引擎。
配置主要通过项目根目录的 pyrightconfig.json 文件实现:
{
"include": ["src"],
"exclude": ["**/__pycache__", "tests"],
"typeCheckingMode": "basic",
"reportMissingImports": true,
"pythonVersion": "3.8"
}
# 函数参数和返回值类型检查
def calculate_discount(price: float, discount: float) -> float:
return price * (1 - discount)
# Pyright会检测到类型错误
result = calculate_discount("100", 0.1) # 错误:字符串不能赋值给float参数
另一个常见错误是函数声明了返回值类型但实际未返回:
def greeting(age: int) -> str:
print("hello") # 缺少return语句
# Pyright报错:Function with declared type of str must return value
在 VS Code 安装了 Pylance/BasedPyright 插件,找到插件右键禁用就不会再检查了。
在一行代码末尾加 # pyright: ignore[规则名称] 可以禁用 Pyright 对当前行的检查,将鼠标挪到报错的代码上面可以看到规则名称
await db.zhaotab_checkin_activities.insert_many(docs) # pyright: ignore[reportUnusedCallResult]
# pyright: 规则名称=false 可以禁用 Pyright 对该文件的检查# pyright: reportUnusedCallResult=false
# ....
对于 monorepo 项目结构,如下所示,只有根目录下的 pyrightconfig.json 才会生效。
|-- myapp
|-- myapp-python
|-- pyrightconfig.json <-- 不生效
|-- myapp-frontend
|-- pyrightconfig.json <-- 生效
↶ 返回首页 ↶