3 分钟阅读
默认值判断:零、空字符串与 None 不能总合并
使用 value or default 很方便,但当零表示合法超时或空字符串表示关闭前缀时,这种写法会偷偷替换用户的设置。
使用 value or default 很方便,但当零表示合法超时或空字符串表示关闭前缀时,这种写法会偷偷替换用户的设置。
通过 row[0]、row[1] 取字段,字段顺序错误可能隐藏很久。解包能为位置赋予名字,并在数量不符时立即报错。
同步两批唯一 ID 时,逐项嵌套比较既冗长又容易漏掉重复值。集合可以直接表达新增、删除和共有项。
默认配置与用户配置合并时,右侧值通常应覆盖左侧值。若还要把结果按输入顺序展示,就需要知道覆盖已有键是否改变它的位置。
读取文本数字时,如果先转换再筛选,空字符串会在过滤之前触发异常。推导式简洁,但仍有明确的执行次序。
两列数据分别保存姓名和分数,zip 默认按较短的一列结束。尾部遗漏不会报错,因此一次字段缺失可能变成看似合法但不完整的结果。
使用 range(len(items)) 取得序号,再通过索引取元素,会把遍历写得较绕。处理日志行号时,还经常把零基索引和一基行号混为一谈。
复制二维列表后修改内部行,原数据也变了。问题不是 copy 失效,而是外层容器复制完成后,内部对象仍被两个容器共同引用。
把空列表写在函数签名里,看起来每次调用都会得到一个新列表。实际上连续两次追加后,第二次结果往往包含第一次的数据,测试之间也可能互相污染。
用一个小型日志统计示例,理解 yield、迭代器耗尽,以及惰性处理的内存边界。
让 CSV 脚本从“能跑一次”变成可检查的工具,明确坏数据该报错还是跳过。
限制同时进行的 I/O,管理任务生命周期,并分清“并发数量”和“等待任务数量”。