SQLite sum 与 total:空表返回不同,大整数求和也不能随意互换 没有记录时,汇总值该表示什么统计表在多数日期都有数据,偶尔某天没有记录,SUM 却返回 NULL,让调用方的加法报错。把它改成 TOTAL 看起来能直接获得零,但这还改变了返回类型和大整数计算方式。空值约定与数值范围... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python 重叠文本匹配:用零宽前瞻找出 ABABA 里的两个 ABA 需要数出现位置,而不是切出互不重叠的片段在 ABABA 中,ABA 可以从位置零开始,也可以从位置二开始,两次出现共用了中间的 A。直接使用 re.finditer("ABA", text) 却只返回一次。这并非正则... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python operator.index:需要整数个数时,为什么不该直接调用 int 个数接口不应悄悄替调用者取整写一个取前几项的函数时,先做 n=int(value) 看起来很方便:字符串和浮点数都能变成整数。但传入三点九会直接变成三,错误的调用约定被隐藏了。如果接口要求调用者提供整数个数,更合适的... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python 字典缺省钩子:方括号能读到默认值,get 为什么却返回空 默认值出现了,键却仍然不存在给 dict 子类定义 __missing__ 后,读取未知配置项可以返回备用值。可调用方从 d[key] 改成 d.get(key),结果又变成 None;甚至刚刚读出一个默认值,检查 ... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite FILTER 条件聚合:合格数量为零的组,怎样仍然留在结果里 报表要显示零,筛选却删掉了整组按区域统计任务时,常常需要同时看到总任务数、成功数和有数值的成功记录数。如果把 status=ok 写进 WHERE,失败记录会先从输入里消失。一个区域若没有成功任务,连区域名称也不会出... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python ExitStack 动态清理:第三个资源打开失败,前两个怎样按倒序释放 资源数量运行时才知道一个任务要按清单打开多个输入文件,再创建输出通道。清单长短不固定,第三次获取还可能失败。如果先把所有资源放进列表,最后才安排关闭,中途异常可能让前面已经成功打开的资源无人管理。ExitStack ... yunqueblog/ 技术教程/ 2026-10-02/ 4 阅读
Python takewhile 的边界元素:前半段读完后,第一条正文为什么不见了 分隔位置已经被读取了一次文本开头是注释,后面才是正文,用 takewhile 取出连续注释很自然。可如果随后继续遍历同一个输入迭代器,正文第一行可能已经丢失。判断一行“不再属于注释”必须先取到这一行;takewhil... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python iter 双参数读块:文件已经到末尾,循环为什么还不停 末尾读不到数据,不代表循环知道该停把文本文件处理脚本改成二进制模式后,有时文件明明已经读完,循环却不断收到空数据。读块函数没有失灵,真正的问题可能是停止标记仍写成了空字符串。双参数 iter 会把每次调用的返回值与哨... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite json_object 的值参数:内容像数组,为什么最终变成了字符串 参数绑定保住了文本,却未决定结构准备接口响应时,把已有数组文本传给 json_object,结果可能是 items 字段里套着一段带方括号的字符串。原始字符都在,JSON 也合法,但下游需要的是数组,类型已经不对。这... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python product 的输入池:只取一个组合,为什么源数据已经全部读完 把读取输入和产生组合分开看组合参数时,itertools.product 很方便:颜色、尺寸与材质各给一组值,就能依次得到所有搭配。由于返回结果是迭代器,很容易以为只调用一次 next,就只会从每个输入取出一项。实际... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读