python教程技术文章
-
通过开发环境正常、交付后缺依赖的示例,区分 pyproject.toml 的构建后端与运行依赖,解释静态及动态版本来源和 wheel 元数据字段。182 收藏 -
用 Python statistics.NormalDist.overlap 比较两个正态分布的重叠面积,说明 mu、sigma、返回值范围和常见误读。182 收藏 -
文章 · python教程 | 4天前 | 异常处理 · python · logging · handler traceback propagate Python logging logging.exception 日志重复输出
Python logging 中可以用 logger.exception 在异常处理器里保留完整 traceback;如果同一条日志重复出现,优先检查重复调用、父子 logger 的 propagate,以及同一层级是否挂了多个 handler。本文给出集中配置和排查模板。181 收藏 -
Python logging.handlers.MemoryHandler 会把 LogRecord 暂存在内存中,并在缓冲区达到 capacity 或记录级别达到 flushLevel 时刷新到目标处理器。本文用具体代码说明参数触发条件、关闭时的收尾方式,以及它与异步日志队列的区别。181 收藏 -
介绍 Python dataclass 的 kw_only、KW_ONLY 与 field(kw_only=True) 写法,说明如何阻止位置参数,并处理继承、参数重排和 __match_args__ 边界。179 收藏 -
Python 程序变慢时,先用 cProfile 采集完整调用路径,再用 pstats 按累计时间、自身时间和调用关系定位真正的热点,最后用 timeit 验证局部优化。178 收藏 -
Python 可用 zoneinfo.reset_tzpath 在运行时切换 IANA 时区数据目录,但路径必须为绝对路径,且切换不会自动清空 ZoneInfo 缓存。本文给出完整代码,并比较 reset_tzpath、PYTHONTZPATH 与 tzdata 的适用场景。176 收藏 -
本文围绕 itertools.pairwise 的相邻记录比较,说明如何在保留流式处理优势的同时补回首条和末条信息,并覆盖空输入、单条输入和多条输入的边界处理。172 收藏 -
Python 动态分发时,inspect.Signature.bind 可以在真正调用前检查位置参数和关键字参数是否匹配函数签名。本文说明 TypeError 边界、BoundArguments 读取、默认值补齐以及 bind_partial 的选择。172 收藏 -
Python csv.DictReader 可用 restkey 把一行中超出 fieldnames 的值收集到列表。本文给出最小写法,并说明默认 None 键、多余表头、缺失字段、严格模式和导入审计的处理方式。171 收藏 -
Python 的 email.message.EmailMessage 用 set_content 构造正文,用 add_attachment 追加二进制或文本附件,并负责生成 MIME 结构。本文按一个可复用的构造函数说明 maintype、subtype、filename 和序列化边界。170 收藏 -
Python enum.Flag 适合表达可多选的权限、能力和功能开关。本文从基础标记定义开始,说明按位或组合、按位与判断、in 成员检查、零值与输入转换边界,并给出可维护的权限检查写法。167 收藏 -
asyncio.Barrier 中的等待任务被取消时不会自动把屏障置为 broken;filling 阶段的 n_waiting 会减少,调用方要根据剩余参与者选择补位、abort 或 reset。166 收藏 -
目标目录已经存在时,Python 的 shutil.copytree 默认会抛出 FileExistsError。本文围绕 dirs_exist_ok=True 讲清目录合并、同名文件覆盖、copy2 元数据、ignore 过滤和异常边界,给出可重复使用的复制写法。165 收藏 -
Python 的 QueueHandler 只负责把 LogRecord 放入队列,QueueListener 在后台线程中取出记录并交给真正的输出 handler。本文用一个可关闭的日志管线说明两者的职责、级别过滤、队列选择和退出清理边界。161 收藏