-
Python 正则防护需要同时考虑输入上限、模式设计与调用预算,说明标准库 re 和第三方 regex 的超时区别,并用状态封装区分输入拒绝、不匹配和超时。
-
讲清 multiprocessing.Queue 的 feeder thread、close、join_thread 与 cancel_join_thread,给出先消费再 join 的安全收尾写法,避免结果传输阻塞或丢失。
-
用 Python statistics.quantiles 计算 P95/P99 时,关键不是只把 n 改成 100,还要根据样本语义选择 method,并在计算前清理 NaN、检查有效样本量。
-
Python logging 没有配置 handler 时不会简单地丢弃所有高等级日志,而会使用 logging.lastResort 兜底。本文拆解它的触发条件、WARNING 阈值、sys.stderr 输出以及显式 handler 的接管方式。
-
QueueListener 的关键不是把日志放进队列,而是退出时保持正确顺序:先停止业务线程继续产生日志,再调用 stop() 发送停止信号并等待监听线程结束,最后刷新和关闭 Handler。本文给出最小写法、关闭边界和异常兜底。
-
Python tomllib 读取 TOML 时要区分 load 与 loads:磁盘文件使用 rb 模式交给 load,内存 bytes 可包装为 BytesIO,字符串才交给 loads。
-
目标目录已经存在时,Python 的 shutil.copytree 默认会抛出 FileExistsError。本文围绕 dirs_exist_ok=True 讲清目录合并、同名文件覆盖、copy2 元数据、ignore 过滤和异常边界,给出可重复使用的复制写法。
-
Python pathlib 复制符号链接可选择复制所指内容或重建链接。本文通过隔离示例说明 follow_symlinks、相对目标与对象类型判断,并给出旧版本和权限注意事项。
-
Python 3.12 起可以用 type 语句或 typing.TypeAliasType 显式声明可复用类型别名。本文从简单别名、泛型参数和运行时元数据出发,说明 TypeAliasType 与普通赋值、TypeAlias、NewType 的区别及版本边界。
-
Python 装饰器把函数包装成 *args、**kwargs 后,inspect.signature 默认会沿着 __wrapped__ 找回原函数签名。本文说明 functools.wraps、follow_wrapped=False 和显式 __signature__ 的关系,并给出用 Signature.parameters 与 bind 做参数适配的写法。
-
在 Python dataclass 中,使用 typing.ClassVar 标注类级配置后,dataclasses 会把它排除出字段集合和生成的初始化参数。本文用最小示例说明普通标注、ClassVar、fields()、asdict() 以及继承和可变配置的边界。
-
Python configparser 默认启用 BasicInterpolation,配置值中的单个百分号可能被当成插值语法。本文说明为什么要写成 %%、如何使用 %(name)s 引用配置、怎样用 raw=True 读取原文,以及什么时候应该关闭 interpolation。
-
asyncio.PriorityQueue 会按最低优先级先取数据,但相同优先级的任务如果直接携带字典或对象,可能出现顺序不稳定甚至比较异常。本文用 priority、sequence、payload 三元组固定同级任务顺序,并说明生产者、消费者、join、取消和容量边界。
-
需要在一个同步宿主里连续调用多个顶层异步入口时,可以用 asyncio.Runner 复用同一个事件循环和上下文。本文对比 asyncio.run 与 Runner 的生命周期、loop_factory、context 和关闭边界,给出按场景选型的方法。
-
嵌套 asyncio.TaskGroup 发生异常时,内层任务组会先整理自己的 ExceptionGroup,外层再处理收到的异常与取消信号。本文用一个最小结构解释传播边界、except* 分流方式、取消例外和日志防复发规则。