《Python编程实战》4.1 pytest 工程化:fixture 分层与插件
把 pytest 从「能跑」推到「可维护」:conftest.py 向上合并与就近覆盖、fixture 作用域与依赖注入、工厂型 fixture 避免共享可变状态,再把约定写进 pyproject.toml,最后用一个本地 conftest 插件和实测插件清单收尾。
tag
把 pytest 从「能跑」推到「可维护」:conftest.py 向上合并与就近覆盖、fixture 作用域与依赖注入、工厂型 fixture 避免共享可变状态,再把约定写进 pyproject.toml,最后用一个本地 conftest 插件和实测插件清单收尾。
IBM Qiskit 完全入门:安装配置、量子电路可视化、 IBM Quantum 真实量子机运行、量子纠缠实验、Deutsch-Jozsa 算法实现。从零开始编写并执行第一个量子程序。
日志记录离散事件,指标记录系统整体健康度。本节用 prometheus-client 0.26.0 暴露 Counter/Gauge/Histogram,用中间件埋点并规避标签基数陷阱,设计 liveness/readiness 健康检查,再接入 Prometheus 告警规则。
文本日志难以被机器解析。本节用 structlog 26.1.0 把日志输出成结构化 JSON,用 contextvars 绑定请求级上下文,通过 ProcessorFormatter 桥接标准库 logging,并让 trace_id/request_id 贯穿全链路,最后与 OpenTelemetry 打通日志与追踪。
硬编码配置撑不过多环境。本节用 pydantic-settings 2.15.0 讲清配置来源优先级(环境变量 > .env > 默认值)、类型转换与 field_validator 校验、SecretStr 脱敏、嵌套配置与多 .env 合并,以及 lru_cache 缓存配合 FastAPI 依赖注入的落地方式。
一份代码要在多个 Python 版本上跑通。本节实测 uv python list 与 --python-version 的多版本解析,对比 tox 与 nox 的组织思路,给出 GitHub Actions 矩阵配置与缓存键设计,让 CI 既不重复下载也不误用陈旧缓存。
内网与 CI 常常无法直连 PyPI。本节实测 [[tool.uv.index]] 镜像配置与 UV_INDEX_URL 环境变量,讲清私有源凭证与 uv 缓存机制,并用 uv sync --offline 与 wheelhouse 演示一次完全离线的依赖安装与校验。
锁定文件是可复现构建的地基。本节先拆解 pip freeze 为何不可复现,再对比 uv.lock 与 pip-tools 的解析与锁定机制,实测约束文件、平台标记与 PEP 751 pylock.toml,最后讲哈希校验如何把依赖内容彻底锁死。
写在文档里的规范没人执行,变成门禁才会拦人。本节先讲 ruff 规则集怎么选、format 与 --fix 的边界、per-file-ignores 怎么开合理的口子,再用原生 git hook 实测一个「提交前跑 ruff + mypy,不合格就拒绝提交」的门禁,并给出 pre-commit 框架的等价配置。
pyproject.toml 是现代 Python 项目唯一的配置中心。本节逐段拆解它的四个区段——build-system、project、dependency-groups、tool.*,再用实测代码演示 mypy 的三档分层:核心模块严格、适配层宽松、遗留模块豁免,让类型检查既能守住关键逻辑,又不被历史包袱拖垮。
真实项目的第一步不是写代码,而是把脚手架搭对。本节用 uv 从零建出一个 src 布局的 Python 项目,实测 uv init、uv run、uv add、uv lock 的完整输出,再把 ruff 与 mypy 装成 dev 依赖跑通第一次静态检查,让你五分钟拿到一个可提交、可协作、可复现的工程骨架。
本附录分两半:报错速查按异常类型列出真实报错原文、成因与修法,覆盖 SyntaxError 到 AssertionError 共十七类;常见困惑 FAQ 解答 a=b 的别名、可变默认参数、多线程没变快、is 与 ==、pip 装错环境、中文乱码、.pyc 缓存、finally 里 return 等问题。
本附录按场景汇总 Python 生态里的常用第三方库:包管理与环境、代码质量、测试、Web 与 API、数据库与 ORM、数据处理、网络与爬虫、命令行、序列化配置、任务队列、可观测性、科学计算、桌面图像、打包发布,每张表给出库、用途、对应章节与实测版本号,并整理学习资源。
本附录按用途分组整理 Python 标准库常用模块:文本与字符串、数据结构、函数式与迭代、文件与路径、日期时间、数据格式、并发与异步、网络、调试与剖析、系统与进程、测试、数值随机与哈希、压缩归档与持久化,每组给出模块、一句话用途、常用名字与对应正文小节,并标注引入版本与版本分界速查。
本附录把全书用到的 Python 语法压缩成一组速查表:字面量与运算符优先级、字符串/列表/字典/集合的常用方法与复杂度、切片与解包、函数参数四种形态、作用域、类与继承、异常语法、match 语句、PEP 695 类型注解、内置函数与 f-string 格式说明符,每个片段均在 3.14.6 上实测。
《Python编程入门》全书导航页:说明本书定位、读者画像与前置知识、三条学习路径与四个部分之间的依赖关系,并按四个部分列出 18 章 54 节的完整章节索引,另含序、前言、附录 A–D 与常见问题速查表,方便按需定位、跳读与随时查阅全书。
《Python编程入门》的序。从 Python 今天在语言生态中的位置谈起,说明站内既有的 46 篇 Python 专题做的是「单点深挖」、这本书补的是「从零到能干活」的递进路径,并交代本书的三个刻意取舍、明确不写的内容,以及不同起点的读者该从哪一章进入这趟旅程。
《Python编程入门》前言:说明本书的目标读者与前置知识、四部分 18 章的结构分工、每一节的组织方式、代码与环境约定、Python 3.14 的版本基线与三种阅读路径,并给出各部分的学习时长估算,以及发现疏漏时该如何提交勘误与反馈意见。
本书收尾章:给出 Web 后端、数据工程、自动化与工具三条学习路线的下一步顺序,教你用可操作的评估表做生态选型而非背推荐清单,坚持标准库优先,并实跑 help/inspect/pydoc/dis 教你读文档与源码,附 90 天行动清单与三部曲定位。
先测量再优化:用 perf_counter 与 timeit 做微基准并识别四大陷阱,用 cProfile/pstats 定位热点、tracemalloc 剖析内存,实测 list 与 set 查找、sum/any、__slots__、lru_cache、array 的真实收益,并讲清 sys.getsizeof 的局限与何时不该优化。