page contents

又一 Python 神奇库 -- Ruff !

你是否曾盯着终端,焦灼地等待 flake8 和 black 跑完一个大型项目?又或者被 isort 和 autoflake 的配置搞得晕头转向?别担心,今天介绍的这款 “All-in-One”神器,能让你彻底告别工具链的臃肿与缓慢。

attachments-2026-02-aiXcSQaB69a24b04baa9f.png你是否曾盯着终端,焦灼地等待 flake8 和 black 跑完一个大型项目?又或者被 isort 和 autoflake 的配置搞得晕头转向?别担心,今天介绍的这款 “All-in-One”神器,能让你彻底告别工具链的臃肿与缓慢。

大家好,我是你们的老朋友。在Python开发中,维护代码风格和质量是一道必答题。但传统的答案——用Flake8检查代码、用Black格式化、用isort排序导入——这套组合拳虽好,却有几个痛点:速度慢、配置散、工具多。

直到我遇见了它——Ruff。一个用Rust写的,号称比现有工具快10-100倍的Python代码“闪电侠”。它不止快,更能一站式完成代码检查(Lint)和格式化(Format),替代你桌面上那一排工具。

Ruff是什么?

Ruff 是一款用 Rust 编写的超高速 Python 代码检查器和格式化工具。它的设计目标是比 Flake8、Black 和 isort 等现有工具快 10 到 100 倍,同时提供统一的代码质量管理界面。Ruff 可以用一个速度极快的解决方案替代包括 Flake8、Black、isort、pyupgrade 和 autoflake 在内的多个工具。

今天,就让我们用一篇文章的时间,彻底掌握这个新时代的Python开发利器。

一、Ruff初体验:快到难以置信的安装与上手

Ruff的核心优势就是快。有多快?官方数据显示,检查像pandas这样庞大的代码库,Flake8需要30秒,而Ruff仅需0.5秒。这种速度意味着你可以在保存文件时实时检查,而无需任何等待。

安装它,只需要一行命令:

# 推荐使用 uv,体验如飞

uv add ruff --dev

# 或者用 pip

pip install ruff

上手更是简单到离谱。 假设我们有一个“脏兮兮”的Python文件 example.py:

# example.py - 一个充满“问题”的示例文件

from typing import Iterable

import os  # 未使用的导入

import sys # 未使用的导入

def sum_even_numbers(numbers: Iterable[int]) -> int:

    """Given an iterable of integers, return the sum of all even numbers."""

    return sum(

        num for num in numbers

        if num % 2 == 0

    )

unused_var = 42 # 定义了但未使用的变量

让我们请Ruff医生来诊断一下:

# 1. 代码检查 (Lint)

ruff check example.py

输出:

example.py:3:8: F401 [*] `os` imported but unused

example.py:4:8: F401 [*] `sys` imported but unused

example.py:11:1: F841 Local variable `unused_var` is assigned to but never used

Found 3 errors.

[*] 2 fixable with the `--fix` option.

看,它精准地找到了未使用的导入和变量。更棒的是,它还提示有2个问题可以自动修复!

# 2. 一键自动修复

ruff check --fix example.py

运行后,os 和 sys 的导入语句被自动删除。修复后的文件清爽多了。

# 3. 代码格式化 (Format)

ruff format example.py

输出:1 file reformatted现在,你的代码不仅正确,而且风格统一(比如自动调整了缩进和换行)。

看,仅仅3条命令,我们就完成了从检查、修复到格式化的全过程。 这效率,是不是像给开发流程装上了涡轮增压?

二、配置化实战:如何为你的项目量身定制?

Ruff的强大之处在于其高度可配置性。它支持 pyproject.toml、ruff.toml 或 .ruff.toml 配置文件,且配置是级联的,非常适合monorepo项目。

一个标准的 pyproject.toml 配置可能长这样:

[tool.ruff]

# 全局设置

line-length = 88          # 和Black默认保持一致

target-version = "py310"  # 你的项目Python版本

[tool.ruff.lint]

# 选择要启用的规则集,Ruff有800+条规则!

select = [

    "E",   # pycodestyle 错误

    "W",   # pycodestyle 警告

    "F",   # Pyflakes (类似未使用变量/导入的核心检查)

    "UP",  # pyupgrade (自动升级Python语法)

    "B",   # flake8-bugbear (常见bug预防)

    "I",   # isort (导入排序,直接替换isort!)

    "C4",  # flake8-comprehensions (推导式优化)

]

# 忽略某些规则

ignore = ["E501"]  # 暂时忽略“行过长”,让formatter处理

[tool.ruff.format]

# 格式化器设置,保持团队风格统一

quote-style = "double"     # 字符串使用双引号

indent-style = "space"     # 缩进使用空格

skip-magic-trailing-comma = false # 保留末尾逗号,便于diff

进阶技巧:按文件/目录配置规则有时候,测试文件或迁移脚本需要特殊照顾,Ruff可以轻松实现:

[tool.ruff.lint.per-file-ignores]

# 在测试文件中允许使用 `assert` (S101规则)

"tests/**/*.py" = ["S101"]

# 在 `__init__.py` 中,未使用的导入可能是对外暴露的API,可以忽略

"**/__init__.py" = ["F401"]

一键迁移: 如果你从 Black + isort + Flake8 迁移过来,Ruff可以无缝接手你的旧配置,让你无痛切换。

三、融入工作流:让Ruff成为你的开发守护神

单独使用命令已经很棒,但将Ruff集成到你的开发环境和CI/CD中,才能发挥最大威力。

1. 编辑器集成(以VS Code为例)安装官方 Ruff 扩展后,在 settings.json 中加入:

{

    "[python]": {

        "editor.defaultFormatter": "charliermarsh.ruff",

        "editor.codeActionsOnSave": {

            "source.organizeImports": "always", // 保存时自动整理导入(用Ruff的I规则)

            "source.fixAll": "always"           // 保存时自动修复所有可修复问题

        }

    }

}

从此,保存即规范,编码体验行云流水。

2. 预提交钩子(Pre-commit)在 .pre-commit-config.yaml 中配置:

repos:

  -repo:https://github.com/astral-sh/ruff-pre-commit

    rev:v0.12.8# 使用最新版本

    hooks:

      # Ruff linting

      -id:ruff

        args:[--fix]# 提交前自动修复

      # Ruff formatting

      -id:ruff-format

这样,不规范的代码根本无法被提交到仓库。

3. CI/CD 集成(以GitHub Actions为例)在 .github/workflows/lint.yml 中创建流水线:

name: Lint&Format

on:[push,pull_request]

jobs:

ruff:

    runs-on:ubuntu-latest

    steps:

      -uses:actions/checkout@v4

      -name:RunRuff

        uses:astral-sh/ruff-action@v1

        with:

          args:"check --fix ."# 在CI中也可以尝试自动修复

      -name:CheckFormatting

        run:ruffformat--check.# 检查格式化是否符合要求

确保团队每一次合并请求的代码都是整洁的。

写在最后

Ruff的出现,堪称Python工具链的一次“降维打击”。它用极致的速度和统一的设计,解决了多年以来Python代码质量工具“散、慢、繁”的痛点。

总结一下,它的核心优势:

极速:Rust赋能,告别等待。

全能:一统Lint和Format,替换多个工具。

易用:配置简单,开箱即用,迁移平滑。

生态友好:完美融入现代开发工作流(编辑器、Git、CI)。

如果你的团队还在为维护复杂的代码质检工具链而烦恼,或者受困于缓慢的检查速度,Ruff无疑是当前最优、最未来的选择。

是时候给你的项目来一次“工具链升级”了。 你尝试过Ruff了吗?在从传统工具迁移的过程中遇到了什么有趣的问题或惊喜?

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1819 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 1819 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章