最新Python 格式化的转换顺序:加了 !r,为什么数字格式 d 反而不能用了 给调试输出加上!r以后,原本能使用的整数格式04d突然报错;自定义对象的对齐逻辑也不再被调用。原因是!r不是给最终文字加上一层引号,它先把原对象转换为repr字符串,再让字符串处理后面的格式规范。理解转换和格式化的先... yunqueblog/ 技术教程/ 2026-10-04/ 3 阅读
最新Python harmonic_mean:结果返回零,后面的非法数据为什么没有报错 统计函数成功返回一个数字,很容易被调用者当成“所有输入都有效”的证据。但harmonic_mean在本例版本中遇到零会提前返回,因此零后面还有负数,也可能没有报错。把同一组数据换个顺序,负数先被看到,结果又变成异常。... yunqueblog/ 技术教程/ 2026-10-04/ 2 阅读
最新Python file_digest 的输入分支:同样读过两字节,为什么 BytesIO 与文件摘要不同 单元测试用BytesIO代替文件,先读掉一个头部,再调用file_digest。测试算出了全体字节的摘要,换成真实文件后却得到剩余尾部摘要。两者都接受二进制文件对象,但在本文运行版本里走了不同实现分支。这个反例提醒我... yunqueblog/ 技术教程/ 2026-10-04/ 2 阅读
最新Python partition 与 rpartition:找不到分隔符,原文究竟放在哪一格 解析一行简单的key=value时,partition能直接返回三项,看起来比split方便。但将它改成rpartition以后,没有等号的输入却从左侧字段移动到了右侧字段。如果调用代码只读取固定位置,不检查中间项,... yunqueblog/ 技术教程/ 2026-10-04/ 3 阅读
最新Python Decimal.normalize:只是想删尾零,为什么有效数字也被改了 为了把123.4500展示成123.45,调用normalize看起来很自然。但在精度为四的上下文中,它会返回123.4。两个尾零确实不见了,更重要的一位有效数字也变了。normalize不是一个只修剪字符串外观的工... yunqueblog/ 技术教程/ 2026-10-04/ 2 阅读
最新Python itertools.compress:选择器已经用完,为什么源数据又被取走一项 有一条数据流和一串选择标记,compress可以按标记筛出需要的元素。但选择器只有两项时,数据流结束过滤后却可能已经走过第三项。若后面还要继续消费同一个迭代器,这个差异就会造成一条记录看似凭空消失。过滤结果只描述哪些... yunqueblog/ 技术教程/ 2026-10-04/ 2 阅读
Python sqlite3 executemany:生成器中途报错,前两行为什么仍然被提交 导入任务只调用了一次executemany,输入生成器却在第三项之前报错。调用者记录了错误,随后发现前两行已经提交。关键不在于数据库忽略了异常,而在于executemany会逐项消费参数并重复执行语句,输入失败时前面... yunqueblog/ 技术教程/ 2026-10-03/ 4 阅读
Python 扩展切片赋值:普通切片能缩短列表,为什么隔一项替换却必须数量相同 把列表的一段内容替换成一个值,长度可以变短;把切片改成每隔一项,赋同样一个值却抛ValueError。两种写法选择的目标不同:连续切片可以替换一段区域,而步长不为一的扩展切片赋值,需要为每个选中位置提供对应元素。本例... yunqueblog/ 技术教程/ 2026-10-03/ 3 阅读
Python isinstance 的候选顺序:元组里混入数字,为什么有时通过有时才报错 配置里把允许的类型写成一个元组,测试整数样本完全正常,换成字符串却突然抛TypeError。排查后发现元组里混进了普通数字。isinstance可能在前面的候选已经成功时就返回,因此一次匹配成功并不能证明整个候选配置... yunqueblog/ 技术教程/ 2026-10-03/ 3 阅读
Python pprint 的可读性检查:循环列表能打印出来,为什么仍然不能靠那段文字重建 调试一个列表时,pprint顺利输出了内容,于是把那段文字保存下来,期待以后还原对象。但其中出现了Recursion提示,已经不是普通的列表字面量。格式化能够结束、文字能供人阅读、对象关系可以完整保存,是三个需要分别... yunqueblog/ 技术教程/ 2026-10-03/ 3 阅读