python教程技术文章
-
在 Python 3.15 项目中比较 TypeIs 与 TypeGuard:理解真分支、假分支、不兼容类型替换和 typing 版本选择。217 收藏 -
用一个多模块请求场景说明 Python LoggerAdapter 如何把上下文交给 Handler 和 Formatter,重点处理字段缺失、重复 Handler 与 merge_extra 版本差异。215 收藏 -
Python frozen dataclass 保存派生字段时,应把计算放进 __post_init__,用 object.__setattr__ 完成初始化,并用 default_factory 和稳定字段顺序控制默认值与构造签名。213 收藏 -
subprocess.run 超时后会终止并等待直接子进程,不能在 TimeoutExpired 中继续判断它是否存活。需要观察超时边界时改用 Popen、poll 和 communicate,区分最近状态并安全回收输出。213 收藏 -
json.loads 的整数限制和 JSON 文档大小限制不是一回事。本文用 parse_int 建立单个整数位数边界,再配合入口字节数检查,避免超大整数输入拖垮解析。212 收藏 -
Python functools.cache适合无界记忆化,lru_cache适合设置容量和淘汰策略。本文从参数可哈希、typed、cache_info与失效边界出发,给出可直接套用的选择清单。211 收藏 -
Python pathlib 的 Path.glob 和 Path.rglob 不会自动排除点号开头的隐藏目录。本文说明如何包含或排除隐藏路径,并比较结果过滤与 Path.walk 裁剪目录树的写法。207 收藏 -
用 Python dataclass 同时开启 slots 和 weakref_slot,创建节省实例字典且支持弱引用的数据类,并梳理版本、继承、字段反射和动态属性限制。207 收藏 -
Python PickleBuffer 配合 pickle 协议 5,可把大数组数据作为带外缓冲区单独传递,让主 pickle 流只保存对象结构与引用标记。本文给出 NumPy 与自定义容器写法,并说明连续性、顺序、生命周期和安全边界。207 收藏 -
Python 的 sqlite3.Connection.blobopen 可对已有 SQLite BLOB 做分块读写。本文演示 zeroblob 预分配、流式写入和导出,并说明固定长度、rowid 权限、事务与资源边界。205 收藏 -
使用 Python pathlib 的 resolve 与 relative_to 统一路径坐标,安全判断候选路径是否位于根目录下,并处理符号链接、越界、跨盘符和不存在目标等边界。199 收藏 -
Windows 下复用 Python tempfile.NamedTemporaryFile 时,关键是区分原句柄是否仍打开,并正确选择 delete_on_close 或 delete 参数。本文给出 Python 3.12+ 与旧版本的写法、清理责任和验证清单。197 收藏 -
Python re.finditer 默认只返回非重叠匹配。本文用 ababa 说明漏结果的原因,并给出正向先行断言和按起点扫描两种处理方式。193 收藏 -
讲清 Python zipfile ZipFile.extractall 的危险路径检查:遍历 ZipInfo、拒绝绝对路径和 .. 组件,用 commonpath 验证目录边界,并补充 ZIP 炸弹的数量与大小限制。193 收藏 -
说明 Python subprocess.Popen 的 pipesize 在 PIPE、Linux 平台和系统管道限制满足时才会实际调整容量,并区分它与 bufsize、communicate 的职责。187 收藏