V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Davic1
V2EX  ›  Python

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

  •  
  •   Davic1 · 2023-02-09 09:52:17 +08:00 · 3673 次点击
    这是一个创建于 688 天前的主题,其中的信息可能已经有所发展或是发生改变。
    帮助实现良好的代码风格的工具有很多:

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

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

    我现在用 ruff ,规则够用,速度比 flake8 快很多。
    Davic1
        3
    Davic1  
    OP
       2023-02-09 10:23:42 +08:00
    @vicalloy 谢谢推荐, 也准备尝试一下 ruff 了~
    vicalloy
        4
    vicalloy  
       2023-02-09 10:30:37 +08:00   ❤️ 2
    pylance/pylint/flake8/ruff 是一类的,做代码规范化&错误检查
    pyright/mypy 一类,做类型检查
    pyright 据说比 mypy 快,不过这东西用 Typescript 写的,依赖 node 的运行环境。类型检查我还是用 mypy 。
    julyclyde
        5
    julyclyde  
       2023-02-09 11:34:46 +08:00
    @vicalloy 哈哈,没想到居然还有用外语来写这边的语法检查工具的情况
    NoOneNoBody
        6
    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
        7
    ClericPy  
       2023-02-09 19:33:55 +08:00
    现在不都切换到 ruff 上了...
    wizardyhnr
        8
    wizardyhnr  
       2023-02-10 01:06:04 +08:00
    mypy 附带 mypyc ,过了类型检查附送一个编译成 c 的功能,类似 cython 。
    julyclyde
        9
    julyclyde  
       2023-02-22 13:11:22 +08:00
    @Monad mypy 并不是“官方的”吧?


    @vicalloy 我第一次运行 mypy 卡了好几十秒。后面就很快了,不懂是什么原理
    0attocs
        10
    0attocs  
       318 天前
    @vicalloy #4 flake8 、pylint 、ruff 只是 linter ,pylance 是 static analyzer ,天壤之别。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1068 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:41 · PVG 07:41 · LAX 15:41 · JFK 18:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.