Python 教學
本節涵蓋 Python 工程實踐、工具鏈和現代開發工作流。
文件目錄
| 文件 | 說明 |
|---|---|
| Python 工程指南 | 專案結構、依賴管理和最佳實踐 |
| pyproject.toml 指南 | 使用 pyproject.toml 的現代 Python 專案設定 |
| uv 指南 | 快速 Python 套件管理器和專案管理 |
| Python 工具簡介 | 代碼質量工具:Linter、格式化器和類型檢查器 |
代碼質量工具概述
Python 擁有成熟的代碼質量工具生態系統,幫助維護一致性、盡早發現 Bug 並強制執行標準。
工具分類
| 分類 | 用途 | 範例 |
|---|---|---|
| Linter | 發現錯誤、Bug 和風格問題 | Pylint、Flake8、Ruff |
| 格式化器 | 強制一致的代碼風格 | Black、Ruff |
| 類型檢查器 | 驗證類型註解 | MyPy、Pyright |
| 匯入排序器 | 組織 import 語句 | isort、Ruff |
推薦:Ruff
Ruff 是一個用 Rust 編寫的現代一體化 Python Linter 和格式化器。它用一個極快的工具替代了 Flake8、isort、Black 等多個工具。
為什麼選擇 Ruff?
| 方面 | 傳統工具棧 | Ruff |
|---|---|---|
| 需要的工具 | Flake8 + isort + Black + MyPy | 僅 Ruff |
| 速度 | 30-60 秒 | 1-3 秒 |
| 設定 | 多個設定檔 | 單一 pyproject.toml 段 |
| 自動修復 | 有限 | 全面 |
快速開始
# 安裝
pip install ruff
# Lint 並自動修復
ruff check --fix src/
# 格式化
ruff format src/
基礎設定
[tool.ruff]
line-length = 88
target-version = "py38"
[tool.ruff.lint]
select = ["E", "F", "UP", "B", "SIM", "I", "N"]
ignore = ["E501"]
傳統工具(供參考)
| 工具 | 用途 | 速度 | 狀態 |
|---|---|---|---|
| Pylint | 全面 Lint(200+ 規則) | 慢 | 成熟,深度分析仍有價值 |
| Black | 不妥協的格式化器 | 中等 | 廣泛採用的標準 |
| MyPy | 靜態類型檢查 | 慢 | 類型化程式碼庫必備 |
| Flake8 | Lint 封裝(PyFlakes + pycodestyle) | 中等 | 正在被 Ruff 取代 |
詳細的對比和遷移指南請參閱 Python 工具簡介。