Python timeit 的回收开关:外面已启用 GC,计时里面为什么仍然关闭 一段会产生循环引用的处理函数,在普通脚本里运行正常,换成 timeit 后却观察到不同的对象存活情况。先别急着解释成计时更快或内存泄漏。timeit 默认会在计时期间暂时关闭自动垃圾回收,测试环境已经和原来的运行条件... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python Decimal 信号标记:后一笔计算精确,Inexact 为什么仍为真 批量处理测量值时,程序算完每一行就检查 Inexact,给发生精度损失的记录打标。第一行除不尽,第二行明明得到精确的零点五,却也被判为不精确。问题可能出在诊断状态没有清零:Decimal 的信号标记会保留此前发生过的... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python ConfigParser 键名:Path 和 path 为什么会被判成同一个配置项 一份工具配置同时出现 Path 和 path,开发者认为它们是两个名字,ConfigParser 却报告重复选项;只保留一个再写回,首字母又变成小写。这不是写文件时随机改了拼写,而是选项名称在进入解析器时就经过了归一... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python 包资源读取:模块能从 ZIP 导入,旁边的模板为什么不能当普通路径打开 开发目录里,按模块的 __file__ 拼出模板路径一直可用;把包放进 ZIP 后,模块仍能导入,模板却打不开。原因是导入系统能够理解归档内部位置,而普通文件系统接口未必理解。资源属于包,并不保证它已经是一份可直接打... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python SequenceMatcher:两段重复文字很像,相似度为什么却接近零 比较两段长文本,只有开头一个字符不同,其余都是同一字符,直觉上应该非常相似。SequenceMatcher 默认给出的分数却可能为零。遇到这种结果,先查看匹配器的高频元素启发式,再怀疑文件内容或字符编码;输入长度与重... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python mock.side_effect:响应列表用完后,为什么不会退回默认返回值 测试一个会重试的读取函数,给替身安排四次响应,同时设置默认返回值。原以为第五次会继续返回默认值,测试却出现 StopIteration。这里的响应列表有自己的消费状态;列表耗尽不会自动切换到另一项配置,多调用一次本身... yunqueblog/ 技术教程/ 2026-10-02/ 4 阅读
Bash 负数截取偏移:冒号后少一个空格,为什么拿到整段字符串 脚本想从编号末尾取三个字符,却拿回完整编号。表达式里的冒号和减号紧挨着,Bash 把它读成默认值展开,而没有进入字符串截取。给负数偏移留出空格,看起来只是排版变化,实际上是在选择另一种语法;因此这类问题不能只检查变量... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Node.js 文件 URL 转路径:pathname 里的空格编码,为什么不能直接当文件名 把模块地址交给 new URL 后,取出 pathname 再传给文件接口,在简单英文目录里可能一直正常。目录一旦含空格或中文,程序就像在寻找另一份文件;迁移到 Windows 时,盘符前又多出斜杠。pathname... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
JavaScript 静态私有字段:子类继承了方法,为什么仍读不到父类的计数 一个编号工具把累计数量放在静态私有字段里,父类调用一直正常。后来为了添加一种编号类型建立子类,子类虽然能找到原来的静态方法,一执行却抛出 TypeError。方法没有丢失,出问题的是方法里 this 指向了子类,而私... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
JavaScript 位移的三十二位边界:右移零位,为什么数值也会改变 读取一个三十二位标志值后,程序员为了“确保是整数”给它补上右移零位,结果正数变成负数;换成三个大于号后看似恢复,另一个更大的编号却变成了五。这里并没有普通小数精度问题:位移运算会先把数值放进固定宽度的位模式,零位移动... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读