python教程技术文章
-
解释 Python Fraction 接收 float 后出现长分数的原因,并对比字符串、Decimal、整数分子分母和 limit_denominator 的适用场景。411 收藏 -
文章 · python教程 | 6天前 | 日志 · logging · Python教程 · Python contextvars request_id LogRecord logging.Filter
用 Python contextvars 保存 request_id 和用户标识,再由 logging.Filter 将上下文字段注入 LogRecord,统一交给 Formatter 输出;文章同时说明 Handler 挂载位置、缺省值和 finally reset 的并发边界。410 收藏 -
@runtime_checkable 让 Protocol 可用于 isinstance,但运行时只检查成员是否存在,不验证参数、返回值或属性类型。本文拆解静态类型域与运行时结构域,并给出 callable、签名、适配器和业务契约的分层补强方法。410 收藏 -
讲清 Python asyncio.timeout 如何通过 Timeout.reschedule 动态缩短、延长或取消截止时间,并说明绝对时钟、TimeoutError 捕获位置及 expired 状态检查。403 收藏 -
Python 3.14 为 heapq 增加了最大堆 API。本文说明如何用 _max 函数维护最大值优先队列、处理固定容量队列,并为旧版本封装兼容层。397 收藏 -
用 Python typing.TypeIs 编写类型谓词,理解真分支取交集、假分支排除目标类型的规则,并判断哪些列表场景仍应保留 TypeGuard。396 收藏 -
讲清 Python tarfile 解压前如何检查成员路径,拒绝绝对路径、..、盘符路径和链接,并用 filter=data 与临时目录降低越界写入风险。394 收藏 -
用 Python contextvars 在 asyncio 请求链中传递 request_id,说明 Task 上下文继承、copy_context、Token.reset 以及 to_thread 的边界。393 收藏 -
同一个 Python logger 同时输出控制台和审计日志时,handler 级 Filter 可以返回 LogRecord 副本,只给目标 handler 增加字段,避免污染其他输出。391 收藏 -
Python functools.lru_cache 报 unhashable type list 时,根因是可变参数不能参与缓存键。本文解释哈希边界,并用 tuple、排序后的 tuple、frozenset 和包装函数完成稳定缓存。388 收藏 -
asyncio.timeout 适合给一段包含多个 await 的工作设置总预算,asyncio.wait_for 适合限制单个 awaitable。本文比较两者的保护范围、取消对象、TimeoutError 捕获位置和清理延迟,给出异步请求中的选择示例。386 收藏 -
Python zoneinfo本身不携带时区数据库。本文说明系统TZPATH与tzdata回退顺序,给出精简容器和Windows的依赖配置、启动探测及异常处理方法。378 收藏 -
Python 3.12+ 优先用 autocommit 控制 sqlite3 事务;旧项目继续使用 isolation_level 时,要把隐式事务、显式 BEGIN、commit 和 rollback 的边界分清。378 收藏 -
Python 的 cache 与 lru_cache 不是同一种容量策略:前者等价于无限缓存,后者可用 maxsize 限制容量。本文用配置示例和 cache_info 排查命中率、键参数与失效边界。377 收藏 -
functools.cache 不会替你判断隐藏状态是否变化。递归函数要把完整输入放进缓存键,并用 cache_info 与 cache_clear 验证结果。377 收藏