提问: Python 的这几个代码分析工具和类型检查工具区别

2023-02-09 09:52:17 +08:00
 Davic1
帮助实现良好的代码风格的工具有很多:

- [pyright/pylance]( https://github.com/microsoft/pyright)
- [pylint]( https://github.com/PyCQA/pylint)
- flake8
- [black]( https://github.com/psf/black)

black 很好理解, 是自动代码格式化的, 但是对于 pyright 和 pylint 的区别不是很理解。
2996 次点击
所在节点    Python
10 条回复
Monad
2023-02-09 10:01:29 +08:00
静态代码检查工具,通过 Type Hints 实现(部分)编译型语言在编译期的检查。
类似的工具还有官方的 mypy 以及 google 的 pytype 。
vicalloy
2023-02-09 10:14:57 +08:00
我之前用 flake8 ,配置简单规则也够用。
pylint 支持的规则最多,对我来说太复杂了。
pyright/pylance 可能主要是性能方面的优化吧。

我现在用 ruff ,规则够用,速度比 flake8 快很多。
Davic1
2023-02-09 10:23:42 +08:00
@vicalloy 谢谢推荐, 也准备尝试一下 ruff 了~
vicalloy
2023-02-09 10:30:37 +08:00
pylance/pylint/flake8/ruff 是一类的,做代码规范化&错误检查
pyright/mypy 一类,做类型检查
pyright 据说比 mypy 快,不过这东西用 Typescript 写的,依赖 node 的运行环境。类型检查我还是用 mypy 。
julyclyde
2023-02-09 11:34:46 +08:00
@vicalloy 哈哈,没想到居然还有用外语来写这边的语法检查工具的情况
NoOneNoBody
2023-02-09 12:27:10 +08:00
pylance ,vscode 内用的比较好,但它需要自启一个 server (?)
个人觉得最好一点是鼠标划过可以提示__doc__,如果语法参数写在__doc__,可以直接就看到;不好是占较多内存,如果代码文件比较多、长,会有点卡顿

pylint 规则复杂,我总是调不顺
flake8 用在 sublime text ,比较简单,但查参数要打开 source 查看

我个人脑子不好不记参数,代码复用时经常开多个文件 copy 并确认参数格式,本来 vscode+pylance 不错,只是 vscode 需要占用 GPU ,我较多状况是 20 核跑几十万条 pandas ,核显同时开着 vscode 会比较慢,就转到 sublime text 了
ClericPy
2023-02-09 19:33:55 +08:00
现在不都切换到 ruff 上了...
wizardyhnr
2023-02-10 01:06:04 +08:00
mypy 附带 mypyc ,过了类型检查附送一个编译成 c 的功能,类似 cython 。
julyclyde
2023-02-22 13:11:22 +08:00
@Monad mypy 并不是“官方的”吧?


@vicalloy 我第一次运行 mypy 卡了好几十秒。后面就很快了,不懂是什么原理
0attocs
79 天前
@vicalloy #4 flake8 、pylint 、ruff 只是 linter ,pylance 是 static analyzer ,天壤之别。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/914465

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX