Prompts-MCP 686 skills · ai / design / design-pattern / framework / fundamentals / habit / lang / tech-selection /mcp/sse
lang lang/python/import/import-order.md medium

python-import-order

import 三段顺序 — stdlib → third-party → local。Use when 写 Python 后端代码 / 评审涉及 `import-order` 的 PR。

importisortruff三段顺序
paths
  • backend/**/*.py
  • py/**/*.py

Python · import 顺序

规则

import 必须分三段,每段内按字母升序,段间空一行:

# 1. 标准库
import asyncio
import json
from pathlib import Path
from typing import AsyncGenerator

# 2. 第三方
from fastapi import APIRouter, Depends
from pydantic import BaseModel, Field
from tortoise import fields

# 3. 项目内(known-first-party)
from core.config import settings
from core.db import init_db
from models.session import Session
from schemas.session import SessionResponse

通过工具自动维护

.ruff.toml

[lint.isort]
known-first-party = ["core", "models", "schemas", "adapters", "routers", "services", "agents", "tools", "middleware", "utils", "workers"]
section-order = ["future", "standard-library", "third-party", "first-party", "local-folder"]
combine-as-imports = true

CI / pre-commit:

ruff check --select I --fix

反例

# ❌ 顺序乱
from fastapi import FastAPI
import json
from core.config import settings
import asyncio
from pydantic import BaseModel

# ❌ 多重导入散开
from typing import Optional
from typing import List   # → 合并为 from typing import List, Optional

关于 from x import *

全局禁用。namespace 污染、IDE 无法 narrow、IDE/类型检查器追溯困难。

自检

  • [ ] 三段式(stdlib / third / local)?
  • [ ] 段内字母序?
  • [ ] 段间空一行?
  • [ ] 无 from x import *

相关