16 速查表与学习路径
大约 3 分钟编程语言Python速查学习路径检查清单
16 速查表与学习路径
先掌握可运行的标准库程序,再逐步加入类型、测试、打包、并发和生产可靠性。
1. 环境命令
python --version
python -c "import sys; print(sys.executable)"
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python -m pip check
deactivateWindows PowerShell:
py -0p
py -3.14 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip list2. 核心语法
name: str = "api"
ports: list[int] = [8080, 8443]
lookup: dict[str, int] = {"api": 8080}
if name and ports:
print(name, ports[0])
for port in ports:
if port == 8080:
break
else:
print("not found")3. 函数
from collections.abc import Iterable
def mean(values: Iterable[float], *, empty: float = 0.0) -> float:
items = list(values)
if not items:
return empty
return sum(items) / len(items)4. 容器
items = [3, 1, 2]
unique = set(items)
pairs = [("api", 1), ("db", 2)]
by_name = dict(pairs)
print(sorted(unique))
print([value * 2 for value in items if value > 1])5. 文件与路径
from pathlib import Path
base = Path("data")
base.mkdir(parents=True, exist_ok=True)
path = base / "result.json"
path.write_text('{"ok": true}\n', encoding="utf-8")
print(path.read_text(encoding="utf-8"))6. 异常
try:
value = int("not-a-number")
except ValueError as exc:
print(type(exc).__name__, exc)捕获具体异常,保留异常链,资源使用 with。
7. 日志
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s %(name)s %(message)s",
)
log = logging.getLogger(__name__)
log.info("service started")8. 命令行
import argparse
from pathlib import Path
parser = argparse.ArgumentParser()
parser.add_argument("path", type=Path)
parser.add_argument("--timeout", type=float, default=5.0)
args = parser.parse_args()
print(args.path, args.timeout)9. 测试
def add(left: int, right: int) -> int:
return left + right
def test_add() -> None:
assert add(1, 2) == 3python -m pytest
python -m pytest --cov=src --cov-report=term-missing10. 质量门禁
python -m ruff check .
python -m ruff format --check .
python -m mypy src
python -m pytest
python -m build11. subprocess
import subprocess
result = subprocess.run(
["python", "--version"],
check=True,
capture_output=True,
text=True,
timeout=5,
)
print(result.stdout or result.stderr)12. 并发选型
| 工作负载 | 工具 |
|---|---|
| 少量阻塞 I/O | 线程 |
| 批量阻塞任务 | ThreadPoolExecutor |
| 大量网络 I/O | asyncio |
| CPU 密集 | 进程池或原生扩展 |
| 后台定时 | 系统调度器、服务编排或任务平台 |
13. 项目最低交付集
project/
├── pyproject.toml
├── README.md
├── src/package/
├── tests/
├── .gitignore
└── CI configuration最低要求:
- 有明确 Python 版本范围。
- 有锁文件或受控环境。
- 有 CLI 或公开入口。
- 有自动化测试。
- 有格式、lint 和类型门禁。
- 有日志、超时、错误分类和版本输出。
- 有构建产物验证。
14. 学习路径
第 1 阶段:能写小工具
- 数据类型、容器、函数、模块。
pathlib、json、argparse、logging。- 异常处理与虚拟环境。
练习:写一个日志统计器,支持文件路径参数、JSON 输出和错误退出码。
第 2 阶段:能维护项目
- 包结构、依赖声明、类型注解。
- pytest、mypy、ruff、格式化。
- 配置、结构化日志和测试替身。
练习:把日志统计器打包成可安装 CLI,并补充单元测试和 CI。
第 3 阶段:能处理生产任务
- 并发、超时、取消、限流和重试。
- 性能分析、安全输入和敏感信息。
- 优雅停机、健康检查、审计和回滚。
练习:实现批量健康检查,支持并发上限、超时、JSON 结果和部分失败退出码。
第 4 阶段:能建立平台能力
- 插件协议和稳定接口。
- 大规模任务编排、幂等和状态恢复。
- 供应链、制品库、版本策略和灾备。
练习:设计一个可插拔巡检平台,分离规则、执行器、报告和凭据来源。
15. 最终检查
- 我能否解释变量指向哪个对象,以及它是否可变。
- 我能否为错误输入设计明确异常和退出码。
- 我能否不用第三方库完成路径、JSON、CLI、日志和进程调用。
- 我能否为外部依赖构造测试替身。
- 我能否证明并发上限和超时符合下游容量。
- 我能否在干净环境重建、测试、构建和运行项目。
