python教程技术文章
-
asyncio.timeout 适合给一段包含多个 await 的工作设置总预算,asyncio.wait_for 适合限制单个 awaitable。本文比较两者的保护范围、取消对象、TimeoutError 捕获位置和清理延迟,给出异步请求中的选择示例。386 收藏 -
Python 的 cache 与 lru_cache 不是同一种容量策略:前者等价于无限缓存,后者可用 maxsize 限制容量。本文用配置示例和 cache_info 排查命中率、键参数与失效边界。377 收藏 -
csv.DictReader 遇到重复表头时,普通字典会让后一个值覆盖前一个值。本文演示如何保留同名列的全部值,或预处理成唯一字段名后继续使用字典读取。371 收藏 -
用 asyncio.timeout、wait_for 和 wait 处理 Python 异步超时:厘清作用域、取消、TimeoutError、shield 以及 done/pending 的差异,快速定位超时语义问题。365 收藏 -
用一个集合元素检查案例说明 Python typing.TypeGuard 的最小写法、真分支收窄规则、假分支边界,以及它与 TypeIs 和普通 bool 检查函数的区别。348 收藏 -
Python typing.Annotated 的元数据默认会被 get_type_hints() 移除。本文演示如何用 include_extras=True 保留注解,并通过 get_origin、get_args、__origin__ 和 __metadata__ 读取基础类型与元数据。347 收藏 -
文章 · python教程 | 4天前 | Windows · 跨平台 · Python教程 · 文件系统 · Python Python 3.15 os.path.isreserved Windows 保留路径 ntpath
Python 3.15 推荐用 os.path.isreserved 判断 Windows 保留路径。本文解释 CON、尾随空格、冒号流等名称为何需要提前拒绝,并给出 Linux 或 macOS 生成 Windows 路径时使用 ntpath.isreserved 的跨平台写法。343 收藏 -
用 Python asyncio.TaskGroup 管理并发任务:理解首个异常如何取消同组任务、如何清理 CancelledError,以及如何用 except* 处理 ExceptionGroup。339 收藏 -
文章 · python教程 | 1天前 | python · 异步编程 · contextvars · 日志追踪 · Python asyncio contextvars request_id ContextVar
用 Python ContextVar 在 asyncio 异步任务间传递 request_id,讲清 set、get、reset、create_task 上下文复制、copy_context 和日志排查边界。335 收藏 -
Python 3.15 同时引入了面向 free-threaded 构建的 abi3t。本文从兼容目标、Limited API、构建工具和 wheel 文件名四个角度,说明什么时候选 abi3.abi3t,什么时候必须单独构建 cp315t。331 收藏 -
用 asyncio.Queue(maxsize) 控制生产者回压,配合 task_done、join 和 Python 3.13 的 shutdown,构建有界且能正常收尾的异步生产者消费者模型。330 收藏 -
Python zoneinfo 抛出 ZoneInfoNotFoundError 时,优先检查系统时区数据库和 tzdata 依赖,再处理 PYTHONTZPATH。本文给出 Windows、Linux 容器和自定义目录的部署清单。326 收藏 -
文章 · python教程 | 4天前 | JSON · Python教程 · 异常排查 · 数据解析 · Python json.loads JSONDecodeError lineno colno pos JSON排错
Python 解析多行 JSON 报错时,JSONDecodeError 的 lineno 和 colno 是从 1 开始的行列坐标,pos 是 doc 中的 0 起始偏移。本文用 splitlines() 还原出错行,说明换行、空白和 Unicode 字符带来的定位边界,并给出可复用的诊断函数。326 收藏 -
文章 · python教程 | 2天前 | decimal · Python教程 · 金额处理 · 精确计算 · 数据舍入 · Python decimal 舍入模式 quantize ROUND_HALF_UP ROUND_HALF_EVEN
用 Python decimal.quantize 处理金额时,先用 Decimal 字符串和 0.01 量子固定小数位,再按业务规则选择 ROUND_HALF_EVEN、ROUND_HALF_UP 或方向性舍入,避免把截断、中点取偶数和远离零混为一谈。306 收藏 -
用一个可收尾的 Python 异步日志小项目讲清 QueueHandler、QueueListener、队列容量、prepare 与 stop 的配置和排查边界。303 收藏