Python 月历网格:明明只查十月,结果里为什么出现九月和十一月 准备一个按月展示活动的小页面,代码请求十月月历,展开结果后却有三十五个日期,第一项还在九月。如果直接按格子数量统计本月可用天数,就会多算。月历生成器通常服务于完整周的排版,它需要把首尾行补齐;月份统计和界面网格,应该... yunqueblog/ 技术教程/ 2026-10-02/ 4 阅读
Python traceback.clear_frames:保存报错以后,局部对象为什么迟迟没有释放 批处理把失败时的 traceback 对象放进列表,准备最后统一汇报。失败函数已经返回,里面的大对象却仍然活着,累计几百次后占用明显增加。这个现象不一定是垃圾回收失效:保存的回溯仍然指向栈帧,栈帧又可能留着局部变量。... yunqueblog/ 技术教程/ 2026-10-02/ 4 阅读
Python dataclass 字段清单:构造时传入的值,为什么没有出现在 asdict 里 把一段原始记录交给 dataclass,构造函数正常接收了它,导出字典时却找不到这个输入;类里另一项默认配置也没有进入字段列表。与其怀疑序列化漏字段,不如先看注解:普通字段、InitVar 和 ClassVar 在数... yunqueblog/ 技术教程/ 2026-10-02/ 4 阅读
Python heapq.merge:几路数据混在一起,为什么结果仍然乱序 把几个服务导出的时间记录合成一份报表时,看到 heapq.merge 会返回有序流,很容易直接把几路原始列表交给它。结果前面几项升序,后面却突然出现更小的值。问题并不是归并偶尔失灵,而是其中一路原本没有按同一规则排好... yunqueblog/ 技术教程/ 2026-10-02/ 4 阅读
Python splitext:隐藏文件的开头点,为什么不被当成扩展名 批量生成缩略图名称时,脚本想把扩展名换成新格式。直接按点拆开再取第一段,会把 report.final.png 变成 report,也会把开头带点的配置名拆成空字符串。文件名里的点承担不同角色,不能把所有位置都视作“... yunqueblog/ 技术教程/ 2026-10-02/ 4 阅读
Python partial 参数合并:固定了默认选项,调用时为什么还能覆盖 给导出函数做一个常用版本时,很多人会用 partial 预先填好格式和目录。后来调用方传入同名选项,输出格式却改变了,于是误以为封装失效。问题通常在于把“预先提供参数”理解成“禁止修改参数”。partial 负责组合... yunqueblog/ 技术教程/ 2026-10-02/ 5 阅读
Python splitlines:末尾有换行,为什么没有多出一条空记录 导入一段手工维护的任务清单时,程序原本用换行符拆分字符串,再把列表长度当成条目数。编辑器给最后一行补上换行,数量就多了一条;换成另一台机器导出的文本后,末尾又残留回车。这里先别删除所有空字符串,应该确定业务里的“行”... yunqueblog/ 技术教程/ 2026-10-02/ 6 阅读
JavaScript Object.is:两个零看起来相同,为什么缓存还需要区分 做一个只记住上次输入的缓存,看上去只要用三个等号比较就够了。可当输入从正零变成负零,缓存可能直接复用旧结果;连续两次输入 NaN,却又每次重新计算。两种现象来自同一件事:你选的相等规则与计算语义没有对齐。Object... yunqueblog/ 技术教程/ 2026-10-02/ 6 阅读
Git mailmap:贡献者名字统一了,提交里的旧邮箱为什么还在 贡献者换过邮箱,提交统计里就出现两个名字。直接改写历史虽然可能统一记录,却会改变提交对象并影响引用。若需求只是让日志与贡献报表采用同一份显示身份,可以先评估 mailmap:把旧身份映射为约定的规范姓名和邮箱。这种映... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Bash select 菜单:输入选项文字,为什么没有选中那一项 用 Bash 做一个简单菜单,用户输入选项文字以后,变量却变成空串;再按一次空回车,循环体甚至没有执行。select 不等于“把输入文本赋给变量”的普通读取,它会先把选项编号,然后按输入编号选择对应的词。菜单变量保存... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读